一、Python的概念和技术
Python是一门流行的编程语言,它由 Guido van Rossum创建,于 1991 年发布。它用于:Web 开发(服务器端),软件开发,数学,系统脚本。
作为一门ABC语言的替代品,Python提供了高效且高级的数据结构,还能简单有效地面向对象编程。Python随着版本的更新和语言新功能的添加,逐渐被用于大型的,独立项目的开发。其次,Python具有丰富的标准库,提供了适用于各个主要系统平台的源码和机器码。
二、安装Python
1. 在本地安装Python和运行PyCharm编译器
①安装windows 版Python Python Releases for Windows | Python.org 若电脑已经安装python可以忽略,选择想要的版本,特别注意32位和64位的差别,选择installer
记住install的地址 后面配置pycharm需要。
②安装pycharm:百度搜索选择英文网站https://www.jetbrains.com/pycharm/download/download-thanks.html?platform=windows
选择download,下载community版本,等待下载完成
点击next
推荐安装在c盘,路径不要带有中文
四个都勾选
可以选择先不重启
启动pycharm 出现如下弹窗点击OK
点击New Project,就可以写一个Python程序了
2. 下面介绍如何安装想要的包
这里改成cmd.exe,然后点击OK
打开terminal,同时记住这里的路径
第一条命令:输入activate
第二条命令:输入 pip install + 想要的下载的包,按下回车键,等待下载完成
如图,我们成功地下载了第一个包(可以使用import camelcase来测试是否下载成功)。
三、Python基本语法
1.Python语法
Python可以在命令行中编写并执行Python语句,Python讲究缩进(indented block),其他语言代码缩进只是为了可读性,而Python使用缩进来指示代码块。缩进的空格数取决于程序员,但不能没有。
if 2>5:
print("apple")
print("apple")
注:①在同一代码块中必须使用相同的空格,否则出错。
②如果从某一行起需要结束if分支,则那一行无需空格。
2.Python变量
与其他编程语言不同,在Python中变量是为其赋值时创建的,Python中没有声明变量的命令。字符串变量可以用单引号或双引号来声明,在一行中为多个变量名赋值。
x,y,z = "orange","banana","cherry"
输出变量:一般情况下使用print()直接输出,如果需要结合文本和变量,则需使用‘+’字符。
x = "awesome"
print(x)
print('Python is '+x)
‘+’字符可以将两个字符变量相加。
x = "Python is "
y = "awesome"
z = x + y
print(z)
注:①为了提高程序的可读性,经常使用更具有描述性的名称来作为变量;
②Python的变量名需以字母或下划线字符开头,不能以数字开头;
③变量名只能包含字母,数字,下滑线;
④变量名区分大小写(如:age和AGE是不同的名称)。
3.Python数字:Python中有三种数字类型:int,float,complex。
①int:完整的数字,正数,负数,无小数,与C语言不同的是Python中int所表示的数字没有范围,type(x)表示的是x的类型;
x=122222222222222222222222222
print(x)
print(type(x))
②float:浮点数包含小数的正数和负数,浮点数也可以是带有‘e’或‘E’的科学数字,表示10的幂;
③complex:其虚部用‘j’来编写;
x = 2+3j
print(type(x))
④类型转化:可以使用int,float,complex从一种类型转化为另一种类型。但需注意的是:不能将complex类型转化为其他类型。
5.Python字符串
Python字符串字面量可以由单引号或双引号括起,可以用print()函数来显示字符串字面量。多行字符串可由三个双引号或单引号赋值给变量。
a = """Python is a widely used general-purpose, high level programming language.
It was initially designed by Guido van Rossum in 1991
and developed by Python Software Foundation.
It was mainly developed for emphasis on code readability,
and its syntax allows programmers to express concepts in fewer lines of code."""
print(a)
①在Python中字符串即为数组,单个字符就是长度为1的字符串,方括号可以访问字符串中的元素;
a = "Hello,World!"
print(a[1])
②可以使用裁剪语法获取一定范围内的字符:指定开始索引和结束索引,以冒号分隔,返回字符串的一部分,也可以使用负索引从字符串末尾开始切片;
a = "Hello,World!"
print(a[2:5])
print(a[-5:-2])
#输出结果分别为:llo、orl
注:Python中一些关于字符串函数:
len()返回字符串的长度;
a = "Hello, World!"
print(len(a))
strp()删除开头和结尾的空白字符;
a = " Hello, World! "
print(a.strip()) # returns "Hello, World!"
low()返回小写的字符串,upper()返回大写的字符串;
a = "Hello, World!"
print(a.lower())
print(a.upper())
replace()用另一段的字符串来替代当前的字符串;
a = "Hello, World!"
print(a.replace("World", "Kitty"))
split()在找到分隔符时将字符串拆成子字符串;
a = "Hello, World!"
print(a.split(",")) # returns ['Hello', ' World!']
若需检查字符串中是否存在特定短语和字符时,可以使用in或not in关键字;
txt = "China is a great country"
x = "ina" in txt
print(x)
6. Python列表
Python列表一个有序且可更改的集合,在Python中列表用方括号编写。
①创建列表
thislist = ["apple", "banana", "cherry"]
print(thislist)
②访问列表:可以通过引用索引号(x)来访问列表项,若x为正,则访问x+1项,若x为负,则访问倒数第|x|项。可以通过指定范围的起点和终点来指定索引的范围。
thislist = ["apple", "banana", "cherry"]
print(thislist[1])
print(thislist[-1])
#output : banana、cherry
③更改特定元素的值:需要使用索引号,
thislist = ["apple", "banana", "cherry"]
thislist[1] = "mango"
print(thislist)
④遍历列表
thislist = ["apple", "banana", "cherry"]
for x in thislist:
print(x)
⑤检查项目是否存在:若需确定列表中是否存在指定的项,需用‘in’这个关键字(代码略);
注:一些基本关于列表的函数:
len()表示列表有多少项
如需将项目添加到列表的末尾,使用append();
thislist = ["apple", "banana", "cherry"]
thislist.append("orange")
print(thislist)
要在指定的索引处添加项目,需用insert();
thislist = ["apple", "banana", "cherry"]
thislist.insert(1, "orange")
print(thislist) #插入第二个位置
remove()和pop()都可以删除指定的项目,但如果不指定索引,pop()删除最后的一项;
thislist = ["apple", "banana", "cherry"]
thislist.remove("banana")
print(thislist)
del既可删除指定的索引,又可删除全部列表,clear清空所有列表。
thislist = ["apple", "banana", "cherry"]
del thislist[0]
print(thislist)
del thislist
7. Python元组
Python元组是有序且不可更改的集合,允许重复元素。在Python中元组是用圆括号编写的,很多情况下元组的使用方式与列表相同,但也有较多不同之处需要留意。
①创建元组:创建单项元组时需要在项目后面加上逗号,同时还可以通过‘tuple()’构造函数来创建元组,但需要使用双括号;
thistuple = ("apple", "banana", "cherry")
print(thistuple)
②访问元组项目:与列表访问方式相同;
thistuple = ("apple", "banana", "cherry")
print(thistuple[1])
print(thistuple[-1])
③更改元组值:创建元组值后其实无法更改元组值,因为元组是恒定的,但可以通过将元组转换为列表后再改变其中的值,最后将列表转换为元组;
x = ("apple", "banana", "cherry")
y = list(x)
y[1] = "kiwi"
x = tuple(y)
print(x)
④遍历元组:与遍历列表的方法相同(用for);
⑤检查项目是否存在:与列表方式相同;
⑥添加与删除项目:元组无法添加或删除项目,会报错,但是可以用del删除整个元组;
⑦合并两个元组:与合并两个字符变量相同。
8.Python集合
Python集合是无序和无索引的集合,没有重复的成员,Python集合用花括号编写,由于集合是无序的,所以无法确定项目的显示顺序,也无法引用索引来访问集合中的项目
①建立集合;
thisset = {"apple", "banana", "cherry"}
print(thisset)
②遍历集合与查询项目:for遍历所有项目,in来查询指定的项目;
③更改项目:集合一旦创建,就无法更改项目,但可以添加项目,使用add可以添加一个项目到集合中,使用update可以添加多个项目到集合中;
thisset = {"apple", "banana", "cherry"}
thisset.add("orange")
thisset.update(["mango", "grapes"])
print(thisset)
④删除项目:使用remove()或discard(),但如果所删除的项目不在,remove会报错,但discard不会报错。删除项目也可以使用pop(),但此方法删除最后一项,由于集合无序,故永远不知道删除哪一项。同时还有clear()和del可以清除整个集合,两者不同之处在于clear使得集合为空,del使该集合不存在;
⑤合并集合:可以使用union返回两个集合中所有项目的新集合,也可以使用update将一个集合中的项目插入另外一个集合中,但两者都会排除任何项。
set1 = {"a", "b" , "c"}
set2 = {1, 2, 3}
set3 = set1.union(set2) #set1.update(set2)
print(set3)
9.Python字典
Python字典是一个无序,可变和有索引的集合,没有重复的成员。
①创建字典;
thisdict = {
"brand": "Porsche",
"model": "911",
"year": 1963
}
print(thisdict)
②访问项目:可以用方括号引用其键名来访问字典的项目,也可以使用get函数(使用圆括号)来实现结果;
x = thisdict["model"]
x = thisdict.get("model")
③更改与遍历项目:通过引用其键名来更改项目。通过for来遍历项目,但循环遍历字典时返回字典的键,但也有返回字典的值的方法;
for x in thisdict:
print(x) #打印字典中的键名
for x in thisdict:
print(thisdict[x]) #打印字典中的值
注:①可以使用 values() 函数返回字典的值;
②可以使用 items() 函数遍历键和值:
for x in thisdict.values():
print(x) #遍历值
for x, y in thisdict.items():
print(x, y) #遍历键和值
④检查键是否存在:与列表、元组等相同,使用in关键字;
10.Python循环(while,if else,for)
①Python中 if 语句需要有缩进,若无缩进,则会报错。elif 表示为:如果之前的条件不正确,那么就试试这个条件。else 捕获未被之前条件捕获的内容(可以直接使用 else)。如果只有一条语句执行,则可以将其与 if 放置在同一行,如果有两条语句需要执行,可以将 if else 放在同一行。
a = 200
b = 66
if b > a:
print("b is greater than a")
elif a == b:
print("a and b are equal")
else:
print("a is greater than b")
#可以不用elif
"""
else :
print("a is greater than b")
"""
注:if 语句中一些其他用法:and 相当于C语言中的 &&,or 相当于C语言中的||;if语句不能为空,若因为某种原因写了无内容的if语句可以使用pass来避免错误。
②Python有两个原始的循环命令:while和for。break语句可以跳出循环,continue可以结束此轮循环,进入下一层循环。else表示当循环条件不成立时再运行一次接下来的程序;
i = 0
while i < 7:
i += 1
if i == 3:
continue #break
print(i)
注:for循环主要运用于列表、元组、集合、字典的遍历
③Range()函数返回一个数字序列,默认从0开始,并依次递增1,并以括号内的数字结束。可以通过添加三个参数来指定增量值:第一个表示起始值,第二个表示不能超过的值,第三个表示增量。
for x in range(10):
print(x) # output : 0 ~ 9
for x in range(3, 10):
print(x) # output : 3 ~ 9
for x in range(3, 50, 6):
print(x) # output : 3、9、15、21、27、33、39、45 (从3开始,不大于50,步长为6)
11.Python函数
Python函数是一种仅在调用时运行的代码块,可以将数据传递到函数中函数可以把数据作为结果返回。
①在Python中使用 def 关键字定义函数。若需要调用函数,使用函数名称加括号。信息可以作为参数传递给函数,可以根据需要添加任意数量的参数,只需用逗号分隔即可;
def my_function():
print("Hello from a function")
my_function()
②调用不带参数的函数,使用默认值,输出“I am from China”;
def my_function(country = "China"):
print("I am from " + country)
my_function("India") # output:I am from India
my_function() # output:I am from China
my_function("Brazil") # output:I am from Brazil
③可以将任何数据类型(字符串、数字、列表、字典等),并且在函数内其将被视为相同数据类型;
def my_function(food):
for x in food:
print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)
④关键字参数:还可以通过使用key=value语法发送参数,参数的顺序无关紧要;
def my_function(child3, child2, child1):
print("The youngest child is " + child3)
my_function(child1 = "Phoebe", child2 = "Jennifer", child3 = "Rory")
# output:The youngest child is Rory
⑤如果不知道需要传递多少参数,可以使用*,这样,函数将接收一个参数元组,并可以相应地访问各项;
def my_function(*kids):
print("The youngest child is " + kids[2])
my_function("Phoebe", "Jennifer", "Rory")
⑥函数定义不能为空,若出于某种原因写了无内容函数定义,可以使用pass语句来避免错误。
12.Python Lambda
Python lambda 是一种匿名函数,可接受任意数量的参数,但只能有一个表达式。
x = lambda a : a + 10
print(x(5))
#一个 lambda 函数,它把作为参数传入的数字加 10,然后打印结果
x = lambda a, b : a * b
print(x(5, 6))
#一个 lambda 函数,它把参数 a 与参数 b 相乘并打印结果
使用lambda的原因:当lambda作为另一个函数内的匿名函数时,会更好的展现lambda的强大能力,因为在同一程序中使用相同的函数定义来生成两个函数。
13.Python数组
Python中没有内置对数组的支持,但可以使用列表来替代,故此处不再赘述。
14.Python 类和对象
Python是一种面向对象的编程语言,几乎所有东西都是对象,拥有属性和方法,类(class)类似对象构造函数,或者是用于创建对象的“蓝图”。
①创建类和对象:创建类需用关键字class。创建一个名为myclass的类,接着使用名为myclass的类去创建对象;
class MyClass:
x = 5
p1 = MyClass()
print(p1.x)
②__init__()函数:所有类都有一个名为__init__()函数,它在启动类时运行,使用__init__()将值赋给对象属性,或者在创建对象时需要执行的其他操作。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Bill", 63)
print(p1.name)
print(p1.age)
# 创建一个名为Person的类,并使用__init__()为name和age赋值
③对象方法:对象也可以包含方法,对象中的方法是属于该对象的函数。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def myfunc(self):
print("Hello my name is " + self.name)
p1 = Person("Bill", 63)
p1.myfunc()
# 插入一个打印问候语的函数,并在 p1 对象上执行它
④self参数:self参数是对类的当前实例的引用,用于访问属于该类的变量。起始它不必被命名为self,可以随意调用它,但它必须是类中任意函数的首个参数。
15.Python迭代器
Python迭代器是可迭代的对象,可以使用它来遍历所有值。从技术上讲,在Python中,迭代器是实现迭代器协议的对象,它包含方法__iter()__和__next()__,列表,元组,字典,集合,字符串都是可迭代的对象,所有这些对象都有拥有获取迭代器的方法。
①从元组返回一个迭代器,并打印每一个值;
mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)
print(next(myit))
print(next(myit))
print(next(myit))
②遍历迭代器:与遍历列表,元组方法相同,使用for来循环遍历可迭代对象;
③创建迭代器:要把对象和类创建为迭代器,必须为对象实现实现__iter()和__next__()。__iter__():可以执行操作(初始化等)(类似__init__()函数),但必须始终返回迭代器对象本身;__next__():执行操作,但必须返回序列中的下一个项目。创建一个返回数字的迭代器,从1开始,每个序列增加1(返回1,2,3);
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
#创建一个返回数字的迭代器,从 1 开始,每个序列将增加 1(返回 1、2、3、4、5 等)
注:如果有足够的next语句,或者在for循环中使用,则上面的例子将永远进行下去,为了防止永远进行下去,我们使用StopIteration语句。在__next__()方法中,如果迭代完成指定的次数,我们可以添加一个终止条件来引发错误。
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a <= 20:
x = self.a
self.a += 1
return x
else:
raise StopIteration
myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
print(x)
16.Python模块:模块是包含一组函数的文件,希望在应用程序中引用。
①创建与使用模块:如需创建模块,只需将所需代码保存在文件扩展名为.py的文件中,接着可以使用import来使用刚刚创建的模块;
def greeting(name):
print("Hello, " + name) # 在名为 mymodule.py 的文件中保存代码
import mymodule
mymodule.greeting("Bill") #导入名为 mymodule 的模块,并调用 greeting 函数:
②模块中的变量:模块可以包含各种类型的变量(数组、字典、对象)
③为模块命名:可以随意对模块文件命名,但是文件扩展名必须是.py,同时可以在导入模块时使用使用as关键字创建别名。
17.Python 文件打开与读取
“r”-读取-默认值。打开文件进行读取,如果文件不存在则报错。
在服务器上打开文件:打开文件需使用内建的open()函数,open()函数返回文件对象,此对象有一个read()方法用于读取文件的内容。也可以只读文件的一部分。返回文件中的前5个字符。也可以使用readline()方法返回一行,通过两次调用可以读取文件的两行,通过for循环遍历文件的行,我们可以读取整个文件。用close()可以关闭文件,完成后需关闭文件。
f = open("demofile.txt", "r")
print(f.read(5)) #返回文件中的前五个字符
print(f.readline()) #读取文件中的一行
print(f.readline()) #读取文件中的两行
for x in f:
print(x) #逐行遍历文件
f.close() #关闭文件
18.Python文件写入和创建
如需写入已有的文件,必须向open()函数添加参数:“a”-追加-会追加到文件的末尾,“w”-写入-会覆盖任何已有的内容,如图65,打开文件“demofile.txt”并将内容追加到文件中。如图66,打开文件“text.txt”并覆盖内容。
f = open("demofile2.txt", "a")
f.write("Now the file has more content!")
f.close() #打开文件 "demofile2.txt" 并将内容追加到文件中
"""
追加后,打开并读取该文件:
f = open("demofile2.txt", "r")
print(f.read())
"""
f = open("demofile3.txt", "w")
f.write("Woops! I have deleted the content!")
f.close() #打开文件 "demofile3.txt" 并覆盖内容:
"""
写入后,打开并读取该文件:
f = open("demofile3.txt", "r")
print(f.read())
"""
注:如需在Python中创建新文件,使用open()方法,并使用以下参数之一:
“x”-创建-将创建一个文件,如果文件存在则返回错误;
“a”-追加-打开供追加的文件,如果不存在则创建该文件;
“w”-写入-打开文件进行写入,若不存在则创建文件;
19.Python删除文件
如需删除文件,必须要导入OS模块,并运行其os.remove()函数,通常情况下为避免出现错误,需要在尝试删除文件之前检查文件是否存在。
import os
if os.path.exists("demofile.txt"):
os.remove("demofile.txt")
else:
print("The file does not exist")
# 检查文件是否存在,然后删除它
如需删除整个文件夹,使用os.rmdir()方法。
import os
os.rmdir("myfolder") # 只能删除空文件夹