1.函数
函数就是执行特定功能的一段代码.
函数的一些作用:
- 复用代码
- 隐藏实现细节
- 提高可维护性
- 提高可读性便于调试
函数的格式:
def calc(a,b):
c = a + b
return c
result = calc(10,20)
print(result) # 30
1).函数的参数传递
形式参数:简称形参,出现在函数的定义中.
实际参数:简称实参,主函数中的出现.
位置实参:
def calc(a,b): # a和b为形参
c = a + b
return
result = calc(10,20) # 10为a的实参,20为b的实参
print(result) # 30
关键字实参:
def calc(a,b):
c = a + b
return c
result = calc(b=10,a=20)
print(result)
2).函数的返回值
- 如果函数没有返回值,函数执行完毕后,不需要给调用处提供返回值,此时,return可以不写
- 函数的返回值,如果是1个,直接返回原值
- 函数的返回值,如果多个,返回结果为元组
def fun1():
print("hello!")
def fun2():
return "hello"
def fun(num):
odd = [] #存储奇数
even = [] #存储偶数
for i in num:
if i%2:
odd.append(i)
else:
even.append(i)
return odd,even
lst1 = [10,29,34,23,44,53,55]
print(fun(lst1))
结果:
3).函数的参数定义
默认值参数:
def fun(a,b=10):
print(a,b)
fun(100)
fun(20,30)
结果:
个数可变的位置参数:
def fun(*args):
print(args)
fun(10)
fun(10,30)
fun(30,405,50)
结果:
注:结果返回元组.
个数可变的关键字参数:
def fun(**kwargs):
print(kwargs)
fun(a=10)
fun(a=10,b=50)
fun(a=10,b=30,c=80)
结果:
注:结果返回字典,个数不定的位置参数只能是一个,个数不定的关键字参数也只能是一个.总之,字啊一个函数定义的过程中,既有个数可变的位置参数和个数可变的关键字参数时候,需要将个数可变的位置参数放在前面.
def fun(*args,**kwargs):
pass
通过列表和字典传递参数:
def fun(a,b,c):
print(a,b,c)
lst1 = [10,20,30]
fun(*lst1)
dict1 = {"a":100,"b":200,"c":300}
fun(**dict1)
结果:
函数定义参数位置问题:
4).变量的作用域
def fun(a,b):
c = a + b # c为局部变量
print(c)
name = "杨老师" #全局变量
print(name)
def fun1():
print(name)
fun1()
def fun2():
global age #使得局部变量age变为全局变量
age = 300
print(age)
fun2()
print(age)
结果:
5).递归函数
如果在一个函数的函数体内调用该函数本身,这个函数称为递归函数.
练习:斐波拉契数列
def fib(n):
if n==1:
return 1
elif n==2:
return 1
else:
return fib(n-1)+fib(n-2)
print(fib(6))
for i in range(1,7):
print(fib(i),end=" ")
结果:
函数知识点总结:
2.异常处理
try:
a = int(input("请输入一个数"))
b = int(input("请输入一个数"))
result = a/b
print(result)
except ZeroDivisionError:
print("除数不能为0")
print("程序结束!")
结果:
try……except……else
try:
a = int(input("请输入一个数"))
b = int(input("请输入一个数"))
result = a/b
except BaseException as e:
print("出错了",e)
else:
print("计算结果为:",result)
结果为:
try:
a = int(input("请输入一个数"))
b = int(input("请输入一个数"))
result = a/b
except BaseException as e:
print("出错了",e)
else:
print("计算结果为:",result)
finally:
print("谢谢你的使用!")
结果:
常见的异常类型:
使用traceback可以打印异常信息
import traceback
try:
print(1/0)
except:
traceback.print_exc()
附:使用Pycharm调试程序