函数
函数是对程序逻辑进行结构化或过程化的一种编程方法,就是将完成一定功能的代码段组合在一起。
函数定义
def functionName(par1,par2,...):
语句块
...
return expression
函数调用
函数调用注意传入参数的正确性。
functionName(par1,par2,...)
函数参数
除了函数的必选参数外,还有默认参数、可选参数和关键字参数。
- 默认参数
默认参数的位置在必选参数的后面;默认参数一定是不可变对象。
def power(x,n=2):
s=1
while n>0:
n=n-1
s=s*x
return s
print(power(3)) #9
print(power(3,3)) #27
- 可变参数
可变参数的含义就是传入的参数个数是可变的,可以是任意个,例如1个、2个或3个等。
def calc(*num):
s=0
for n in num:
s=s+n
return s
print(calc(1,2,3,4)) #10
print(calc(3,4)) #7
- 关键字参数
关键字参数传入 0 个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个 dict(字典)。
def student(name, age, **other):
print('name:', name, 'age:', age, 'other:', other)
student('XiaoMing', 20) #name: XiaoMing age: 20 other: {}
student('XiaoMing', 20, sex='M') # name: XiaoMing age: 20 other: {'sex': 'M'}
student('XiaoMing', 20, sex='M', num='120153703') # name: XiaoMing age: 20 other: {'sex': 'M', 'num': '120153703'}
- 参数组合
参数可以组合使用,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。
函数的嵌套
在一个函数里边,再定义一个函数。定义在其他函数内的函数叫作内部函数,内部函数所在的函数叫作外部函数。
def A(a):
print('this is a')
def B(b):
print('this is b')
print('a+b=',a+b)
B(3)
print('over!')
A(2)
#this is a
#this is b
#a+b= 5
#over!
内部函数可以访问外部函数传入的参数。
函数的递归调用
递归分为两类:直接递归和间接递归。
直接递归就是在函数中直接调用函数自身;间接递归就是间接地调用一个函数,如第一个函数调用另一个函数,而该函数又调用了第一个函数。
def fac(n):
if n<=1:
return 1
else:
return n*fac(n-1)
print(fac(4)) #24
变量作用域
在函数中定义的变量称为局部变量。局部变量只在定义它的函数内部有效。
在函数体之外定义的变量称为全局变量,全局变量在定义之后的代码中都有效。
模块
一个.py文件就是一个模块。使用模块最大的好处就是大大提高了代码的可维护性。
导入和创建模块
- 导入模块
#导入整个模块
import module1[, module2[,… moduleN]
#导入模块中某一函数
from modname import name1[, name2[,… nameN]]
- 创建模块
创建一个test.py文件,在文件中定义函数:
def add(a,b):
return a+b
在其他文件中,可以导入并使用该函数:
import test
print(test.add(2,4)) #6
---------------
from test import add
print(add(2,4)) #6