1. 用def来定义函数
可以有参或无参,有返回值或无返回值,更奇葩的是,可以有多个返回值。
def hello(): print('hello!') hello() #调用上面的函数,打印出hello!
函数体用缩进来标记,而C语言中用{}来标记。一旦顶格写,说明函数体结束。
2. 实参、形参、引用、多态
def add(a,b) #a,b是形参 return a+b add(2,3) #2,3是实参 add('hello,','world') add([1,2],[3,4]) #以上3行显示了函数的多态性,不同类型参数的返回情况 def f(a): a[0]='abc' x=[1,2] print(x) f(x) #函数将列表第1个元素改为了'abc' print(x) #打印出['abc',2] f(x[:]) #为了避免x被改写,可以传入一个引用 print(x)
3. lambda函数
lambda参数提供了一种简便的创建函数的方式,但只能是一行表达式,不能太复杂,否则仍然要用def来定义函数。
add2=lambda a,b:a+b print(add2(2,6)) #这里注意,光写add2(2,6)是没反应的,要写到交互控制台中才行,代码中则加上print等来调用它的函数或表达式
4. 变量作用域
作用域分全局的和局部(本地)的,和C语言类似,不再赘述,只说一下注意点:
(1)在局部(如函数体)中使用全局变量时,要用global a来说明a是全局变量;
(2)在嵌套结构中使用上一级变量时,使用nonlocal a
5. 模块及其引入
模块是指一系列函数、表达式和类等的集合,有时表现有一个py文件。
import math print(math.fabs(-5))
也可以只引用fabs函数:
from math import fabs #如果是import *则是导入所有全局变量和函数 print(fabs(-6))
自己也可以定义一个test.py用以被调用的模块。模块被import时将被执行一次。