从零开始的Linux运维屌丝之路,资源免费分享平台   运维人员首选:简单、易用、高效、安全、稳定、社区活跃的开源软件

20、python函数基础知识

发布:蔺要红04-22分类: Python


函数 function
 
定义:函数是将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需要调用函数名即可




一个简单点的函数如下
 
def buy():
    print('Hello ,I m linyaohong')
print(buy) #打印的是内存地址
buy()
E:\Python\学习\venv\Scripts\python.exe E:/整理版笔记/python/函数/函数基本入门.py
<function buy at 0x0000000000785AE8>
Hello ,I m linyaohong


函数-参数
 
参数可以让你的函数更灵活,不只能做死的动作,还可以根据调用时传参的不同来决定函数内部的执行流程






 
def buy(name):  #函数的参数
    print("Hello ,I'm ",name)
buy('蔺要红')
E:\Python\学习\venv\Scripts\python.exe E:/整理版笔记/python/函数/函数基本入门.py
Hello ,I'm  蔺要红
 

形参变量
只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则 不能再使用该形参变量
实参
可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在逬行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应 预先用赋值,输入等办法使参数获得确定值

 
a,b = 2,4
c = a**b
print(c)
#改进
def calc(x,y):      #形参
    res = x**y
    print(res)      
    return res      #返回函数执行结果
calc(2,4)           #实参
calc(3,3)
calc(4,4)
#E:\Python\学习\venv\Scripts\python.exe E:/整理版笔记/python/函数/函数基本入门.py
16
16
27
256
#-----------------------------------案例二------------------------------------
def calc(x,y): #形参
    res = x**y
    print(res)
    return res
c = calc(2,6)  #2.6实参
print(c)
#E:\Python\学习\venv\Scripts\python.exe E:/整理版笔记/python/函数/函数基本入门.py
64
64


函数-位置参数
 
def stu_register(name,age,country,course,):
    print("-----stu_registertion info-----------")
    print(name,age,country,course)
stu_register("LIN",'22','CN','Python')
stu_register("Yao",'26','EN','Linux')
#E:\Python\学习\venv\Scripts\python.exe E:/整理版笔记/python/函数/函数-位置参数-.py
LIN 22 CN Python
Yao 26 EN Linux
 
函数-默认参数

默认参数必须放到位置参数后面
 
def stu_register(name,age,course='Linux',country="CN"):
    print(name,age,country,course)
stu_register("LIN",'22','Python','EN')
stu_register("Yao",'26','Linux','JP')
stu_register("Hong",'21','Nginx')
stu_register("Ding",'25')
#E:\Python\学习\venv\Scripts\python.exe E:/整理版笔记/python/函数/函数-默认参数.py
LIN 22 EN Python
Yao 26 JP Linux
Hong 21 CN Nginx
Ding 25 CN Linux

函数-关键参数
 
关键参数必须放到位置参数后面
 
def stu_register(name,age,course='Linux',country="CN",SEX="BOY"):
    print(name,age,SEX,country,course)
stu_register("LIN",'22',course='Python',country="EN")
stu_register("Yao",'22',course='Nginx',country="JP")

E:\Python\学习\venv\Scripts\python.exe E:/整理版笔记/python/函数/函数-关键参数.py
LIN 22 BOY EN Python
Yao 22 BOY JP Nginx
#----------------------------------------------------------------------
def stu_register(name,age,course='Linux',country="CN",SEX="BOY"):
    print(name,age,SEX,country,course)
#错误写法、关键参数必须放到位置参数后面
stu_register("LIN",course='Python',22,country="EN")

E:\Python\学习\venv\Scripts\python.exe E:/整理版笔记/python/函数/函数-关键参数.py
  File "E:/整理版笔记/python/函数/函数-关键参数.py", line 10
    stu_register("LIN",course='Python',22,country="EN")
                                      ^
SyntaxError: positional argument follows keyword argument
#----------------------------------------------------------------------
def stu_register(name,age,course='Linux',country="CN",SEX="BOY"):
    print(name,age,SEX,country,course)
#错误写法、age重复
stu_register("Yao",'27',age='33',country="EN")

#E:\Python\学习\venv\Scripts\python.exe E:/整理版笔记/python/函数/函数-关键参数.py
Traceback (most recent call last):
  File "E:/整理版笔记/python/函数/函数-关键参数.py", line 10, in <module>
    stu_register("Yao",'27',age='33',country="EN")
TypeError: stu_register() got multiple values for argument 'age'
 
函数-非固定参数
 
def send_alert(msg,date,*args):
# 如果形参中出现*(*user),传递的参数就可以不再是固定个数,传过来的所有参数打包成元祖
    for u in args:
        print(msg,date,u)
send_alert("报警信息",'2019','Lin','YAO','Hong')
#错误写法、详情看输出,
send_alert("报警信息",2019,['Lin','YAO','Hong'])
#第二种方式
send_alert("报警信息",2019,*['Lin','YAO','Hong'])

#E:\Python\学习\venv\Scripts\python.exe E:/整理版笔记/python/函数/12.py
报警信息 2019 Lin
报警信息 2019 YAO
报警信息 2019 Hong
报警信息 2019 ['Lin', 'YAO', 'Hong']
报警信息 2019 Lin
报警信息 2019 YAO
报警信息 2019 Hong
#函数-非固定参数
def send_alert(msg,*args,date):
# 如果形参中出现*(*user),传递的参数就可以不再是固定个数,传过来的所有参数打包成元祖
    for u in args:
        print(msg,u,date)
#形参包含*后,后面还有参数的话,调用的时候需要使用关键参数
send_alert("报警信息",'Lin','YAO','Hong',date='2019')

#E:\Python\学习\venv\Scripts\python.exe E:/整理版笔记/python/函数/123.py
报警信息 Lin 2019
报警信息 YAO 2019
报警信息 Hong 2019
#函数-非固定参数
def send_alert(name,*args,**kwargs):
#**kwargs 接收 未定义的关键参数
    print(name,args,kwargs)
send_alert("Lin",22,'33','44','55')
send_alert("Lin",22,'33','44','55',addr='山东',num='2018')

#E:\Python\学习\venv\Scripts\python.exe E:/整理版笔记/python/函数/函数-非固定参数3.py
Lin (22, '33', '44', '55') {}
Lin (22, '33', '44', '55') {'num': '2018', 'addr': '山东'}
#函数-非固定参数
def send_alert(name,*args,**kwargs):
#**kwargs 接收 未定义的关键参数
    print(name,args,kwargs)
d = {'names':'Jack'}
c = {33,44,55}
send_alert('LIN',d)
send_alert('Yao',*c,**d)
send_alert('Hong','33',*c,**d)
#E:\Python\学习\venv\Scripts\python.exe E:/整理版笔记/python/函数/非固定参数.py
LIN ({'names': 'Jack'},) {}
Yao (33, 44, 55) {'names': 'Jack'}
Hong ('33', 33, 44, 55) {'names': 'Jack'}
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,如有侵权我会在24小时之内删除!

欢迎使用手机扫描访问本站