一、注释
python中注释的方法有两种,一种是使用“#”,适用于单行注释;另一种则是使用一组三个单引号或者一组三个双引号,适用于大段代码注释。
'''一组单引号注释方式,适用于大段代码注释'''
"""一组双引号的注释方式,适用于大段代码注释"""
二、缩进
python中使用缩进来表示不同层级的代码块,一般缩进方式是使用4个空格或使用一个tab键来替代4个空格,但不要在程序中同时使用tab键和4个空格,这会导致代码在跨平台时不能运行。官方推荐使用4个空格缩进。 注意:Python语法允许代码块随意缩进几个空格,但同一层级的代码块必须具有相同的缩进。
三、变量
在Python中使用变量时需要注意以下几点: (1)在使用变量之前,需要对其先赋值。 (2)变量名可以包括字母、数字、下划线,但变量名不能以数字开头。 (3)字母可以是大写或小写,但大小写是不同的。 (4)等号(=)是赋值的意思,左边是变量名,右边是值,不可写反。
四、输入输出
Python中的输出函数为print();输入函数为input()。
string = input('请输入字符串:')
print('string:',string)
注意:使用print()输出字符串时,使用单引号和双引号没有区别。
print("Hellow World")
print('Hellow World')
当字符串中存在单引号或双引号时,直接打印可能会出错: (1)如果字符串在单引号中,可以在单引号前加转义字符“\”; (2)如果字符串在双引号中,可以直接加单引号嵌入。
print('let\'s go')
print("let's go")
五、语句断行
Python中一条语句代表一行,且在换行时语句末尾不需要使用分隔符。
print("hellow")
print('world')
如果要将两条简单的语句写在同一行,也可以使用“;”。
print("hellow");print('world')
如果将“;”用在一行语句的末尾,则表示对本行的结果不打印输出。
a ="hellow"
a;
如果一条语句较长想要分两行来写,可以使用“\”来换行,如果是在括号或者3个引号之间,则系统可以自动识别换行。
六、比较运算符
Python语法中的比较运算符及其含义如下表所示:
运算符 | 含义 |
---|
x<y | 判断x是否小于y,如果“是”则返回真,否则返回假 | x<=y | 判断x是否小于等于y,如果“是”则返回真,否则返回假 | x>y | 判断x是否大于y,如果“是”则返回真,否则返回假 | x>=y | 判断x是否大于等于y,如果“是”则返回真,否则返回假 | x==y | 判断x是否等于y,如果“是”则返回真,否则返回假 | x!=y | 判断x是否不等于y,如果“是”则返回真,否则返回假 | x is y | 判断x的地址(id)是否等于y,如果“是”则返回真,否则返回假 | x is not y | 判断x的地址(id)是否不等于y,如果“是”返回真,否则返回假 |
七、数值运算符
Python语法中赋值运算符及其含义:
运算符 | 含义 |
---|
x=y | 将y的值赋给x | x+y | 返回x的值y的值相加的结果 | x-y | 返回x的值减去y的值的结果 | x*y | 返回x的值和y的值相乘的结果 | x/y | 返回x的值除y的值的结果 | x//y | 返回x除y的整数部分 | x%y | 返回x除y的余数 | -x | 返回负x | +x | 返回x的绝对值 | abs(x) | 返回x的绝对值 | int(x) | 返回x的整数值 | float(x) | 返回x的浮点数 | complex(re,im) | 定义复数 | c.conjugate() | 返回复数的共轭复数 | divmod(x,y) | 相当于(x//y,x%y) | pow(x,y) | 返回x的y次方 | x**y | 返回x的y次方 |
八、逻辑运算符
通常在判断条件时,会需要判断多个条件,只有多个条件都满足时,才能执行后面的代码,这个时候就需要用到逻辑运算符。Python中的逻辑运算符包括and(与)、or(或)、not(非)三种。 (1)and(与/并且) 条件1 and 条件2,当两个条件都满足时,返回True,只要有一个条件不满足,就返回False。 (2)or(或/或者) 条件1 or 条件2,只要有一个条件满足,返回True,两个条件都不满足时,返回False。 (3)not(非/不是) not 条件,当条件不满足时,返回True,当条件满足时,返回False。
九、判断结构
(1)简单的if语句: 最简单的if语句只有一个判断条件和一个操作,当条件测试为真时,执行if后面的代码块block。
'''
if 条件:
block
'''
if 1<2:
print(2)
(2)if-else 结构: 当if后面的条件测试为真时,执行代码块bolck1,否则执行代码块block2。
if 条件:
block1
else:
block2
(3)if-elif-else结构: 当判断分支不止一个时,选择if-elif-else结构,这里elif可以有多个;Python只执行if-elif-else中的一个代码块,它依次检查每个条件测试,直到遇到通过了的条件测试,Python将执行通过测试的条件后的代码,并跳过余下测试。
if 条件1:
block1
elif 条件2:
block2
else:
block3
十、循环结构
(1)while循环 当循环条件为真时,执行循环条件后的代码块。
'''
while 循环条件:
代码块
'''
i = 1
su = 0
n = 10
while i <= n:
su = su + i
i = i + 1
print("从1加到%d结果是:%d"%(n,su))
注:要立即退出while循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可以使用break语句。 (2)for循环 将(1)中的代码示例使用for循环来实现,其形式如下:
'''
for 变量 in range(n):
代码块
'''
i = 1
su = 0
n = 10
for i in range(n + 1):
su = su + i
print("从1加到%d结果是:%d"%(n,su))
注:range(n)函数表示一个从0到n-1(不包含n)、长度为n的序列。range(n)函数可以定义步长,其默认步长为1。例如range(5)表示序列:0、1、2、3、4。range(1,12,3)表示序列:1、4、7、10。
十一、异常处理
(1)try-except结构 主要用于处理程序正常执行过程中出现的一些异常情况,如语法错误、数据除零错误、从未定义的变量上取值等。
try:
print('处理代码')
except Exception as e:
print('处理代码发生异常,在这里进行异常处理')
(2)try-except-finally结构 通常用于,无论程序是否发生异常,都要执行必须要执行的操作,如关闭数据库资源、关闭文件资源等。必须要执行的代码要放在finally块中。
try:
print('处理代码')
except Exception as e:
print('处理代码发生异常,在这里进行异常处理')
finally:
print('无论处理代码是否发生异常,这里是必须执行的')
(3)try-except-else结构 程序执行try语句部分,当try语句部分发生异常则执行except语句部分,若不发生异常则执行else语句部分。
try:
print('处理代码')
except Exception as e:
print('处理代码发生异常时执行')
else:
print('处理代码未发生异常时执行')
(4)try-except-finally-else结构 try-except-else结构的升级版,在其基础上增加了必须要执行的部分。
try:
print('处理代码')
except Exception as e:
print('处理代码发生异常时执行')
else:
print('处理代码未发生异常时执行')
finally:
print('无论处理代码是否发生异常都必须执行的部分')
十二、函数
在Python中,定义一个函数是通过def关键字来声明的。在函数中定义的参数为形参,调用函数时我们通过实参来向形参传值。如下例中,函数定义def fun(a,b):中的a和b为形参,函数调用fun(1,2)中的1和2为实参。
'''
def 函数名(参数):
函数体
return 返回值
'''
def fun(a,b):
c = a + b
return c
fun(1,2)
注:函数可以传递参数,也可以不传递参数,可以有返回值,也可以没有返回值。 (1)传统参数传递 无参数传递:对函数进行调用时,不需要给出参数的值。
def fun():
print("无参数传递")
fun()
固定参数传递:需要向函数传递固定的参数值。
def fun(x):
print(x)
fun("有参数传递")
(2)默认参数传递 在编写函数时,可以给每个形参指定默认值,也可以给部分形参指定默认值。在调用函数中给形参提供了实参时,则使用指定的实参值,否则,将使用形参的默认值。
def fun(x,y = 100,z = 'Hellow World'):
print(x,y,z)
fun(0)
fun(0,12)
fun(12,12,'abc')
注:在给参数赋值时要注意参数的顺序,除非标明这个数值是赋给哪个参数的,不标明就必须按照“出场”的顺序,否则可能会出现意想不到的结果。 (3)未知参数个数传递 如果我们不知道传进来多少个参数时,可以使用未知参数个数的传递机制,只需要在参数前面加个*即可。
def fun(x,*args):
print(x)
for i in args:
print(i)
fun('水果有:','苹果','香蕉','梨')
(4)带键参数传递 带键参数传递指参数通过键值对的方式进行传递,只需要在参数前面加**即可。
def fun(x,**kargs):
print(x)
for i in kargs:
print(i,kargs[i])
fun('水果有:',a = '苹果',b = '香蕉',c = '梨')
十三、回调函数
回调函数又叫函数回调,指将函数作为参数传递到另外的函数中执行。例如将A函数作为参数传递到B函数,然后在B函数中执行A函数。这种做法的好处是在函数被定义之前就可以使用函数,或者对于其他函数提供的API(可看成函数)进行调用。
def func(fun,args):
fun(args)
def f1(x):
print('f1函数:',x)
func(f1,1)
十四、闭包
定义:在一个内部函数里对在其外部作用域的变量进行引用。
def funX(x):
def funY(y):
return x*y
return funY
i = funX(9)
i(10)
注:闭包与回调函数有相通之处,回调函数是将函数作为参数传递,闭包是将函数作为返回值返回。闭包可以延长函数的作用时间与作用域。
十五、函数的递归与嵌套
函数的递归是指函数在函数体中直接或间接的调用自身的现象。
def fac(n):
if n == 1:
return 1
else:
return n*fac(n-1)
if __name__ == '__main__':
number = int(input('请输入一个正整数:'))
result = fac(number)
print('%d的阶乘是:%d'%(number,result))
函数的嵌套是指在函数中调用另外的函数。
def args_input():
try:
A = float(input("输入A:"))
B = float(input("输入B:"))
C = float(input("输入C:"))
return A,B,C
except:
print("请输入正确的数值类型!")
return args_input()
def get_delta(A,B,C):
return B**2 - 4*A*C
def solve():
A,B,C = args_input()
delta = get_delta(A,B,C)
if delta < 0 :
print("该方程无解!")
elif delta == 0:
x = B/(-2*A)
print("x = ",x)
else:
x1 = (B + delta**0.5)/(-2*A)
x2 = (B - delta**0.5)/(-2*A)
print("x1 = ",x1)
print("x2 = ",x2)
def main():
solve()
if __name__ == '__main__':
main()
补充:if name == ‘main’:下的代码只有文件作为脚本直接执行时才会被执行,而import到其他脚本中是不会被执行的。
十六、匿名函数lambda
匿名函数指调用一次或几次后就不再需要的函数,属于“一次性”函数。对于一些比较抽象并且整个程序执行下来只需要调用一两次的函数,可以考虑使用lambda来定义。Python中允许用lambda关键字定义一个匿名函数。
g = lambda x,y : x + y
g(5,6)
十七、迭代器
迭代器是访问可迭代对象的工具,迭代器是指用iter(obj)函数返回的对象(实例),用next(it)函数获取可迭代对象的数据。
string = 'abcdefg'
it = iter(string)
while True:
try:
each = next(it)
except StopIteration:
break
print(each)
注:(1)当next(it)函数无法获取下一条记录时,会抛出StopIteration异常。 (2)迭代器只能向前取值,不会后退。 (3)使用iter可返回一个可迭代对象的迭代器。
十八、生成器
yield关键字可以将函数执行的中间结果返回但不结束程序,其作用是把一个函数变成一个generator(生成器)。
def fun(n):
i = 0
while i < n:
yield i
i += 1
for i in fun(10):
print(i)
|