函数(python)

一、函数定义与调用

1、为什么要设计和编写函数?

多次执行的相似甚至完全相同的代码块,为了避免直接复制代码块的方法实现复用,通过设计和编写函数还实现对多次复用。以便于代码维护和代码测试,以及代码可读性。

2、函数的语法格式

python在定义函数时不需要指定参数类型

'''
@Author  :S1Lu
@Date    :2022/10/21 11:10 
'''def 函数名([参数列表]):
	'''注释''
	函数体

3、使用函数计算斐波那契数列中小于参数n的所有值

'''
@Author  :S1Lu
@Date    :2022/10/21 11:10 
'''
def fib(n):
    a , b = 1 , 1
    while a < n:
        print(a,end=' ')
        a , b = b , a+b
fib(100)

4、递归函数

如果在函数体中有调用函数自身的代码,这就称为递归函数

例:

韩罗塔(hanoi)

'''
@Author  :S1Lu
@Date    :2022/10/21 11:10 
'''
def f(n):
    if n==0:
        return 0
    else:
        return 2*f(n-1)+1
x=int(input("请输入片的个数:"))
print("需要移动",f(x),"次")

二 、形参与实参

1、形参和实参的定义

在函数定义时括号内时使用逗号分隔开的形参列表,在函数调用时向其传递实参,讲实参的引用传递给形参。(一个函数可以没有形参,说明这个函数不接收参数)

2、例

'''
@Author  :S1Lu
@Date    :2022/10/21 11:10 
'''

def addOne(a):  #形参a
    print(a)
    a += 1
    print(a)
addOne(3)   #给a传递参数

三、参数类型

1、默认值类型

1.1、定义

语法格式

def 函数名(...,形参名=默认值):
	函数体

可以通过函数名.__defaults__查看函数的所有默认值参数的当前值

1.2、例

'''
@Author  :S1Lu
@Date    :2022/10/21 11:10
'''
def f(a="a",b="b",c="c"):
    return 
print(f.__defaults__)

'''运行结果
('a', 'b', 'c')
'''

2、关键参数

2.1、定义

通过关键参数可以按参数名字传递实参,实参顺序可以和形参顺序不一致,但不影响参数的传递结果。

2.2、例

'''
@Author  :S1Lu
@Date    :2022/10/21 14:01 
'''
def demo(a,b,c=5):
    print(a,b,c)

demo(3,7)   #位置参数a,b   参数c使用默认值
print("=========================================")
demo(c=8,a=9,b=0)   #关键参数

'''运行结果
3 7 5
=========================================
9 0 8
'''

3、可变长度参数

3.1、定义

两种形式 ①*parameter**parameter,前者用来接收任意多个位置实参并将其放在一个元组中,后者接受关键参数并将其放入字典

3.2、例

①*parameter
'''
@Author  :S1Lu
@Date    :2022/10/21 14:07 
'''
def demo(*p):
    print(p)
demo(1,2,3)

'''运行结果
(1, 2, 3)
'''
②**parameter
'''
@Author  :S1Lu
@Date    :2022/10/21 14:07 
'''
def demo(**p):
    for item in p.items():
        print(item)
    print(p)
demo(x=1,y=2,z=3)
'''运行结果
('x', 1)
('y', 2)
('z', 3)
{'x': 1, 'y': 2, 'z': 3}
'''

4、参数传递时的序列解包

4.1、定义

为含有多个形参的函数传递参数时,可以使用python列表、元组、集合、字典以及其他可以迭代的对象作为实参,并在实参名称前加一个星号,python解释器将自动进行解包,然后传递给对多个位置形参,必须保证实参中的元素个数和形参个数相等,否则会出现错误

4.2、例

①列表
'''
@Author  :S1Lu
@Date    :2022/10/21 14:12 
'''
def demo(a,b,c):
    print(a,b,c)
seq = [1,2,3]
demo(*seq)
'''运行结果
1 2 3
'''
②元组
'''
@Author  :S1Lu
@Date    :2022/10/21 15:12 
'''
def demo(a,b,c):
    print(a,b,c)
tup = (1,2,3)
demo(*tup)
'''运行结果
1 2 3
'''
③字典
键为参数
'''
@Author  :S1Lu
@Date    :2022/10/21 15:13 
'''

def demo(a,b,c):
    print(a,b,c)
dict = {'a':97,'b':98,'c':99}
demo(*dict)	#以键为参数
'''运行结果
a b c
'''
值为参数

通过 两个星号或者使用values()方法

'''
@Author  :S1Lu
@Date    :2022/10/21 15:13 
'''

def demo(a,b,c):
    print(a,b,c)
dict = {'a':97,'b':98,'c':99}
demo(**dict)	#以值为参数
'''运行结果
97 98 99
'''
'''
@Author  :S1Lu
@Date    :2022/10/21 15:13 
'''

def demo(a,b,c):
    print(a,b,c)
dict = {'a':97,'b':98,'c':99}
demo(*dict.values())	#以值为参数
'''运行结果
97 98 99
'''
键值对为参数

通过items()方法

'''
@Author  :S1Lu
@Date    :2022/10/21 15:13 
'''

def demo(a,b,c):
    print(a,b,c)
dict = {'a':97,'b':98,'c':99}
demo(*dict.items())
'''运行结果
('a', 97) ('b', 98) ('c', 99)
'''

四、return语句

return语句用来从函数中返回结束函数的执行

五、变量的作用域

1、全局变量

在函数中修改或声明全局变量要使用global声明

2、局部变量

3、nonlical变量

在函数套函数中使用

例:

'''
@Author  :S1Lu
@Date    :2022/10/21 15:13 
'''
def demo01():
  x = "Bill"
  def demo02():
    nonlocal x
    x = "hello"
  demo02() 
  return x
print(demo01())
'''运行结果
hello
'''

六、lambda表达式

6.1、定义

用来声明匿名函数

6.2、例

'''
@Author  :S1Lu
@Date    :2022/10/21 17:19 
'''
f = lambda x,y,z:x+y+z

'''运行结果
6
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

S1Lu

多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值