函数

全局变量、局部变量

全局变量:就是定义在函数外面的变量。

局部变量:定义在函数里面的变量,局部变量只能在函数里面使用,出了函数外面就不能用了。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

实例1:如果函数内有变量就找函数内的变量,如果函数内无变量就去找全局的变量

name = 'abc'#全局变量
def ldd():
name = 'dongmei'#局部变量
print(name)
ldd()#函数调用,函数定义了需要调用才生效
print(name)
打印结果:

dongmei
abc

 

实例2:如果函数内要修改全局变量,需先用global声明下,不过只有int,str,tuple类型修改全局变量是需要global声明,list,字典,集合类型修改全局变量是不需要global声明的

money = 1#全局变量
def ldd():
global money#修改全局变量需先声明
money+= 500
ldd()
print(money)
打印结果:
501

 

参数

以下是调用函数时可使用的正式参数类型:

  • 必传参数也叫位置参数
  • 参数组
  • 默认值参数
  • 关键字参数

默认值参数:

如果传了参数就用传的参数,如果没有传参,就用默认值给的参数

实例1:如果函数内有变量就找函数内的变量,如果函数内无变量就去找全局的变量

def ldd(word='hello'):#传了默认值参数word='hello'
print(word)
ldd()没有传参就用了默认值参数值hello
print('hi')#传了参数值hi,打印就打印传的值

打印结果:

hello
hi 

实例2:写一个函数实现读文件、写文件功能,分析:读文件需要的参数是文件名,写文件需要文件名、写入的内容

def read_file(file,contet='没有传文件内容'):
if contet =='没有传文件内容':
with open('name.txt',encoding='utf-8') as f :
result=f.read()
f.close()
return result
else:
with open('name.txt','w',encoding='utf-8') as w :
w.write(contet)
w.close()

 参数组:

参数为*加参数名,表示参数可以不传或者传多个

实例2:写一个函数实现读文件、写文件功能,分析:读文件需要的参数是文件名,写文件需要文件名、写入的内容

def send_email(*names):
print(names)
send_email('abc','liangdongmei','juanjuan')
send_email()
打印结果:
('abc', 'liangdongmei', 'juanjuan')
()

 

位置参数也叫必传参数:

必传参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样,就是调用是的函数的位置需要跟定义时顺序一致

实例1:

def send_email(age,name,phone):
print(age,name,phone)
send_email(18,'liangdongmei','15990134272')#调用时传参的位置参数需要跟上面定义的一一对应
打印结果:
18 liangdongmei 15990134272

关键字参数:

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

实例1:

def send_email(age,name,phone):
print(age,name,phone)
send_email(name='liangdongmei',age=18,phone='15990134272')#使用关键字调用,关键字参数的位置可以跟上面定义的参数位置不一致
打印结果:
18 liangdongmei 15990134272

位置参数可以跟关键字的参数一起用,但是要写位置参数再写关键字参数,关键字参数后面不能再出现位置参数

实例1:

def send_email(age,name,phone,score):
print(age,name,phone,score)
send_email(18,'liangdongmei',score=18,phone='15990134272')#位置参数可以跟关键字参数混合使用,需先使用位置参数,再使用关键字参数,且关键字参数后不能再跟位置参数
打印结果:
18 liangdongmei 15990134272 18

 

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄