使用def来定义函数:
def 函数名(参数):
语句1
语句2
创建一个求解两个值和的函数:
def sum(a,b): #定义了sum函数
return a + b
ans = sum(1,2) #调用sum这个函数
#ans = 3
global关键字:
可以使函数中的变量设置为全局变量,在函数中使用全局变量。
a = 102 #定义全局变量a
def isn():
global a #global关键字使得这里的a为全局变量a
print(a) #输出全局变量a的值
a = 100 #这里的a指的是全局变量a,所以全局变量a = 100
isn()
默认参数值的函数:
def demo(a,b=90): #b的默认值为90,如果b没有赋值,则值为90
if a > b:
return a
else:
return b
通过关键字参数进行赋值的函数:
def demo2(a,b=9,c=0):
print("a is {0},b is {1},c is {2}".format(a,b,c))
demo2(a=12,c=12) #通过关键字进行赋值
文档字符串:
def sum11(a,b):
"""
该函数是为了求解两个数和的值
参数有a和b
求解公式为a + b
"""
return a + b
print(sum11.__doc__) #返回文档字符串
#返回:
"""
该函数是为了求解两个数和的值
参数有a和b
求解公式为a + b
"""
map函数:
map是一个在 Python 里非常有用的高阶函数。它接受一个函数和一个序列(迭代器)作为输入,然后对序列(迭代器)的每一个值应用这个函数,返回一个序列(迭代器),其包含应用函数后的结果。
a = [1,2,3,4,5]
def square(number):
#求解number值得平方
return number * number
lst = list(map(square,a)) #从a中依次取出元素,作为参数传入square函数中进行运算
#此时lst = [1, 4, 9, 16, 25]
异常:
在程序执行过程中发生的任何错误都是异常,每个异常显示一些相关的错误信息。
当访问一个未定义的变量时,产生NameError |
在Python3中使用Python2独有的语法,产生SyntaxError |
TypeError是类型异常,比如整数和字符串进行加减时会报错 |
异常处理:
使用try......except块来处理任意异常。
try: #try中如果有一行代码出错,就不执行接下来的代码,直接跳到except那里做判断
n = int(input())
print(n ** n)
except ValueError: #只有错误类型是ValueError时,才会执行下面的内容,其他错误类型会直接报错
print("输入的不是整数")
首先执行rty中的内容:
如果内容没有错误,则不执行except中的内容;
如果内容有错误,并且错误类型是ValueError,才会执行except中的内容;
如果内容有错误,但是错误类型不是ValueError,则返回正常错误提示。
try:
n = int(input())
print(n ** n)
except: #没有指定错误类型,一旦出错,就会执行下面的语句
print("运行出错")
首先执行try中的内容:
如果没有错,则不执行except中的内容;
如果有错,不管任何错误直接执行except中的内容
抛出异常:
raise语句可以用来抛出异常。
raise ValueError("值出现错误")
执行这一句话时,会直接打印ValueError异常:
#返回:
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
raise ValueError("值出现错误")
ValueError: 值出现错误
清理行为:
try语句有一个另选的finally子句,finally子句可以定义一个在任何情况下都一定要执行的功能。
不管有没有发生异常,finally 子句 在程序离开 try 后都一定会被执行。当 try 语句中发生了未被 except 捕获的异常(或者它发生在 except 或 else 子句中),在 finally 子句执行完后它会被重新抛出。
finally子句用于释放外部资源,无论使用过程中是否出错。
try:
raise ValueError
finally:
print("清理完成!")
#返回:
清理完成!
Traceback (most recent call last):
File "<pyshell#2>", line 2, in <module>
raise ValueError
ValueError