a = 100
def testA():
print(a)
def testB():
print(a)
testA()
testB()
100
100
修改全局变量的值
a = 100
def testA():
print(a)
def testB():
a = 200
print(a)
testA()
testB()
print(a)
100
200
100
如果想在testB函数中修改全局变量的值,上述方法是不可以的,因为在testB函数中修改,进行的是局部变量的修改,不会影响到全局变量。
a = 100
def testA():
print(a)
def testB():
global a # 修改a为全局变量
a = 200
print(a)
testA()
testB()
print(a)
100
200
200
def func1():
return 100
def func2(num):
print(num)
func2(func1())# 函数2的参数是函数1的返回值
100
当遇到return会有返回值,但也会使函数体下面的程序不执行。
def return_num():
return 1
return 2
print(return_num())
1
当具有多个返回值时,不能写多个return。使用return a,b的形式,默认是元组类型。
def return_num():
return 1,2
print(return_num())
(1, 2) # 元组类型
return可返回元组、字典和列表。
def return_num():
return {
'name':'python','age':50}
print(return_num())
{
'name': 'python', 'age': 50}
根据函数定义时的位置顺序来传递参数
def user_info(name,age,address):
print('{}年龄为{}住在{}'.format(name,age,address))
user_info('Tom',20,'Beijing')
Tom年龄为20住在Beijing
使用键=值的形式来指定,关键字之间无先后顺序。
def user_info(name,age,address):
print('{}年龄为{}住在{}'.format(name,age,address))
user_info('Tom',20,'Beijing') # 位置传递
user_info(name='Mary',address='Shanghai',age=30) # 关键字传递
Tom年龄为20住在Beijing
Mary年龄为30住在Shanghai
注:函数调用时,如果有位置参数,位置参数应该在关键字参数之前,关键字参数之间无先后顺序。
在函数定义时,可以将某些参数设置为默认值,调用时若不传递该参数,则使用默认值。但要注意若有位置参数,位置参数必须在最前面。所有参数必须在默认参数之前。
def user_info(name,age,address='Beijing'): # address为默认参数
print('{}年龄为{}住在{}'.format(name,age,address))
user_info('Tom',20) # 默认参数
user_info(name='Mary',address='Shanghai',age=30) # 传入address数据,则用真实数据。
Tom年龄为20住在Beijing
Mary年龄为30住在Shanghai
用于调用时不确定会传递多少个参数的时候使用。像生活中,填写信息有必填项和选填项,参数数量不确定。
传递位置参数且不确定个数时使用。
def user_info(*avgs):
print(avgs)
user_info('Tom',20)
user_info('Mary','Shanghai',30)
('Tom', 20)
('Mary', 'Shanghai', 30)
书写代码时,传递参数args中,*是必不可少的。args名字可改,但默认不改。从结果可看出,返回的结果是一个元组*。
传递关键字参数且不确定个数时使用。**kwargs与上面的*args用法相同
def user_info(**kwargs):
print(kwargs)
user_info(name = 'Tom',age = 20,address = 'Beijing')
{
'name': 'Tom', 'age': 20, 'address': 'Beijing'}
调用时为关键字参数,可以看出返回的为一个字典。
将一个整体拆分开来,以下为元组的拆包。
def return_num():
return 100,200
a,b = return_num() # 元组拆包
print(a)
print(b)
100
200