关于《python编程快速上手-让繁琐工作自动化》的学习笔记
1.def语句和参数
在hello()函数定义中,有一个名为name的变元。‘变元’是一个变量,当函数调用时参数就存放在其中
关于变元有一件事值得注意:保存在变元中的值,在函数返回后就丢失了
def hello(name): #函数定义
print('hello '+name)
hello('Alice') #函数调用
hello('Bob') #函数调用
2.返回值和return语句
一般来说,函数调用求值的结果称为函数的“返回值”。用def语句创建函数时,可以用return语句指定应该返回什么值
def sum():
i=1+2
return i
print(sum())
3.None值
None是NoneType数据类型的唯一值,它表示没有值
>>>spam=print('hello')
hello
>>>None==spam
True
4.关键字参数
大多数参数是由它们在函数调用中的位置来识别的。但是“关键字参数”是由函数调用时加在它们前面的关键字来识别的。关键字参数通常用于可选变元
例如:print()函数有可选的变元end和sep。print()函数自动在传入的字符串末尾添加换行符,可以设置end关键字参数将它变成另一个字符串;向print()函数传入多个字符串值,该函数会自动用一个空格符分隔它们,可以传入sep关键字参数,替换掉默认的字符串
print('hello')
print('world')
hello
world
print('hello',end=' ')
print('world')
helloworld
>>>print('cats','dogs','mice')
cats dogs mice
>>>print('cats','dogs','mice',sep=',')
cats,dogs,mice
5.局部和全局变量
- 作用域
- 全局作用域中的代码不能使用任何局部变量
- 局部作用域可以访问全局变量
- 一个函数的局部作用域中的代码不能使用其他局部作用域中的变量
- 不同作用域中可以使用相同的名字命名不同的变量
- 局部变量不能在全局作用域中使用
- 局部作用域不能使用其他局部作用域内的变量
- 全局变量可以在局部作用域中读取
6.global语句
- 在函数内使用global语句修改全局变量
def spam()
global egggs
eggs='spam'
eggs='global'
spam()
print(eggs)
# 输出: spam
- 判断变量是处于局部作用域还是全局作用域
- 如果变量在全局作用域中使用(即在所有函数之外),它就是全局变量
- 如果在一个函数中且有针对该变量的global语句,它就是全局变量,否则如果该变量用于函数的赋值语句,它就是局部变量;但是如果该变量没有用在赋值语句中,它就是全局变量
7.异常处理
- try和except语句
- 可能出错的语句放在try子句,如果发生错误,程序执行就转到except语句开始处
- 一旦执行跳转到except子句的代码,就不会再回到try语句,会接着往下执行
def spam(n):
return 42/n
try:
print(spam(2))
print(spam(12))
print(spam(0))
print(spam(1))
except ZeroDivisionError:
print('Error:Invalid argument.')
'''
输出:
21.0
3.5
Error:Invalid argument.
'''