Python中除了内置的函数外,也可以自己编写函数,函数就像是一个程序内的小程序。
def语句和参数
def <函数名>(形参)
<<程序>>
<函数名>(实参)
def SayHello(name):
print("Hello," + name)
SayHello("Jack")
返回值和return语句
用def语句创建函数时,可以用return语句指定应该返回的值
return <函数应该返回的表达式或值>
传递实参
- 位置实参:在函数调用时,每个实参都要关联到函数定义中的一个形参,基于实参顺序进行关联的方式被称为位置实参。
- 关键字实参:关键字实参是传递给函数的名称对,因此,关键字实参的顺序无关重要,但必须要准确指定函数定义中的形参名。
def describe_pet(animal_type, animal_name):
#显示宠物信息
print(f"I have a {animal_type}.")
print(f"My {animal_type} name is {animal_name.title()}")
describe_pet("dog", "willie")#位置实参
describe_pet(animal_name = "willie", animal_type = "dog")#关键字实参
局部和全局作用域
- 全局作用域中的代码不能使用任何局部变量
- 局部作用域中的代码可以访问全局变量
- 一个函数局部作用域中的代码不能使用其他局部作用域中的变量
- 在不同的作用域中可以使用相同的名字命名不同的变量
gobal语句
gobal语句可以用作定义一个全局变量
gobal <变量名>
- 如果变量在全局作用域中使用,它就是全局变量
- 如果在一个函数中,有针对该变量的gobal语句,它就是全局变量
- 如果该变量用于函数中的赋值语句,它就是局部变量
- 如果该变量没有用于函数中的赋值语句,它就是全局变量
def eggs1():
global eggs #全局变量
eggs = "Mail"
print(eggs)
def eggs2():
eggs = "Bail" #局部变量
print(eggs)
def eggs3():
print(eggs) #全局变量
eggs = 42 #全局变量
print(eggs)
eggs3()
eggs2()
eggs1()
输出结果:
42
42
Bail
Mail
>>>