函数基础及高级应用

本文详细介绍了Python函数的基础概念,包括定义、调用规则和互调用。进一步讲解了参数传递的方式,如位置传参、关键字传参和参数组传参,并通过示例展示了元组和字典在接收参数时的应用。此外,还提到了lambda表达式用于创建匿名函数的便捷性。最后,探讨了函数内的变量作用域,包括全局变量和局部变量,以及如何通过`global`关键字在函数内部访问全局变量。
摘要由CSDN通过智能技术生成

函数 函数基础

函数的定义 及 优点?
把实现一定功能的代码封装在一起 定义个名称 可以重复使用。

**定义
def 函数名(形参列表):
函数体
调用函数
函数名(实参列表):
函数的使用规则?
函数之间可以互相调用
要先定义后调用
调用函数是一定要加()

#函数之间可以互相调用,但要先定义后调用**
def foo():
print(“this is function foo”)
bar()

def bar():
print(“this is function bar()”)

foo() #调用 函数foo() 再调用函数之前把bar() 定义好

高级应用

给函数传参,
方式1 位置传参:参数的个数和位置必须与定义时一致

def sayinfo(name,age):
#print(f"我的名字叫{name}年龄{age}岁")
print(“我的名字叫%s年龄%d岁”%(name,age))

#sayinfo() #错误
#sayinfo(“bob”) #错误
sayinfo(“bob”,19) #正确
sayinfo(“tom”,21) #正确
sayinfo(21,“jerry”) #不符合常规习惯

					****方式2 关键字传参 与位置无关 ,但与个数要一致****

参数组传参 :函数形参个数不固定,形参个数可能是0个也可能是多个时使用

使用元组()接收
def sayinfo(*args):
[root@dc code]# vim hs2.py
def sayinfo(*args):
print(“aaaa”)
print("#" * 20)
sayinfo()
sayinfo(9)
sayinfo(7,3,“a”)
sayinfo(“a”,1,5,7)
[root@dc code]# python3 hs2.py
aaaa
####################
aaaa
####################
aaaa
####################
aaaa
####################
[root@dc code]# vim hs3.py
def very_sum(*x):
s=0
i=0
while i < len(x):
s += x[i]
i += 1
print(s)
very_sum()
very_sum(2)
very_sum(3,8)
very_sum(3,6,12,34)
[root@dc code]# python3 hs3.py
0
2
11
55
使用字典 { } 接收
def sayinfo(**kwargs):
[root@dc code]# vim hs4.py
def sayinfo(**kwargs):
print(kwargs)
sayinfo()
sayinfo(gender=‘女’)
sayinfo(name=‘bob’,age=10)
[root@dc code]# python3 hs4.py
{}
{‘gender’: ‘女’}
{‘name’: ‘bob’, ‘age’: 10}

综合
[root@dc code]# vim hs5.py
def sayinfo(x,y,args,school=“tarena”,**kwargs):
print(x,y,school)
print(args)
print(kwargs)
print("
" * 20)
sayinfo(9,8,“a”,“f”,“yaya”,school=“abc”,name=“boi”,classname=“nsd2103”)
sayinfo(9,8)
[root@dc code]# python3 hs5.py
9 8 abc
(‘a’, ‘f’, ‘yaya’)
{‘name’: ‘boi’, ‘classname’: ‘nsd2103’}


9 8 tarena
()
{}


lambad 关键字:创建匿名函数
简化代码
格式: 变量名=lambad 参数列表 :函数体

[root@dc code]# vim hs6.py
def bdx(x,y):
if x > y:
print(f"数字{x}大于数字{y}")
else:
print(f"数字{y}大于数字{x}")
bdx(100,99)
bdx(63,50)
x=bdx
x=(10,9)
DX = lambda x,y: print(f"{x}>{y}") if x > y else print(f"{y}>{x}")
DX(10,9)
DX(11,19)
[root@dc code]# python3 hs6.py
数字100大于数字99
数字63大于数字50
10>9
19>11
不加( )是对函数的引用,相当于把代码赋值给对方
[root@dc code]# vim hs6.py
def bdx(x,y):
if x > y:
print(f"数字{x}大于数字{y}")
else:
print(f"数字{y}大于数字{x}")
bdx(100,99)
print(bdx)
x=bdx
print(x)
print("+" * 10)
x(99,68)
[root@dc code]# python3 hs6.py
数字100大于数字99
<function bdx at 0x7f93cfc6eea0>
<function bdx at 0x7f93cfc6eea0>
++++++++++
数字99大于数字68

全局变量,所有函数都可以调用
[root@dc code]# vim hs7.py
name = “jerry”
def a():
#name=“bob”
print(“fun a name values:”,name)
def b():

pass

print("fun b name values:",name)

def c():
#pass
print(“fun name values:”,name)
a()
b()
c()
#print(“name vlaues :”,name)
[root@dc code]# python3 hs7.py
fun a name values: jerry
fun b name values: jerry
fun name values: jerry
变量的作用域 ,在脚本里定义函数的时候,变量分为全局变量和
局部变量2种
全局变量: 在所有函数的上方定义的变量 , 是脚本列定义的所有函数
都可以使用的变量
局部变量:在每个函数体内部定义的变量,只能函数自己使用,
只在函数执行过程中有效。

global 关键字 在函数体内调用全局变量

[root@dc code]# vim hs8.py
num = 0
def tj(name):
print(“你输入的名字是”,name)
global num
num += 1
tj(“bobo”)
tj(“jerry”)
tj(“qee”)
print(“函数tj被执行了%d次” %num)
[root@dc code]# python3 hs8.py
你输入的名字是 bobo
你输入的名字是 jerry
你输入的名字是 qee
函数tj被执行了3次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值