【Python语言基础】11、函数-01

1. 函数简介

函数也是一个对象,函数用来保存一些可执行的代码,并且可以在需要的时候对这些语句进行多次的调用。

1.1 函数创建

语法定义:

def 函数名 ([行参1 : type,行参2 : type,...,行参数n : type]) -> return_type : 
	代码块

# type表示参数类型,不具有强制性,仅作为提示信息
# return_type 表示返回值类型,不具有强制性,作为提示信息
# 定义函数
def fn (a : int,b : int) -> int : 
	print('这是一个函数!')

# 调用
fn()

# 结果:
这是一个函数!

***Repl Closed***

定义行参相当于在函数内部申明了变量,但是并不赋值

2. 函数参数

定义函数一般都是需要实现某种功能,定义函数时可以在函数的()中定义数量不等的行参,多个参数之间使用逗号分割

  • 形参(形式参数): 定义形参相当于在函数内部申明了变量,但是并不赋值
  • 实参(实际参数): 如果函数定义了形参,那么在调用函数时也必须传递实参,实参将会赋值给对应的形参。有几个形参就有多少个实参
# 定义函数
def fn(a, b) : 
	print(a+b)

# 调用
fn(4,82)

# 结果:
86

***Repl Closed***

3. 参数传递方式

定义形参是,可以为形参指定默认值,指定了默认值以后如果用户传递了默认值则默认值没有任何作用,如果用户没有传递,则默认值就会生效

# 定义函数
def fn(a, b,c = 20) : 
	print(a+b+c)

# 调用
fn(4,82)

# 结果:
106

***Repl Closed***

  • 实参传递方式
  1. 位置参数:将对象位置的实参赋值给对应位置的形参
  2. 关键字参数:可以不按照形参的定义顺序去传递参数,而是直接根据参数名取传递参数
# 定义函数
def fn(a, b,c = 20) : 
	print(a+b+c)

# 调用
fn(c=4,a=82,b=2)

# 结果
88

***Repl Closed***

  • 位置参数和关键字参数可以混合使用
    混合使用时,必须将位置参数写到前面
# 定义函数
def fn(a, b,c = 20) : 
	print(a+b+c)

# 调用
fn(4,c=22,b=2)

# 结果:
28

***Repl Closed***

  • 实参的类型
    函数在调用的时候,解析器不会检查实参的类型,实参可以传递任意类型的对象。

4. 不定长参数

参数的个数是不定的,在定义函数时,可以在形参前加上*,这样这个形参会获取到的所有实参,会将所有的实参保存到一个元组中

# 定义函数
def fn(*a) : 
	print('a = ',a)

# 调用
fn(1,3,5,4)

# 结果:
a =  (1, 3, 5, 4)

***Repl Closed***

  • 带星号的参数只能有一个
  • 带星号的参数可以和其他参数配合使用
# 定义函数
def fn(a,b,*c) : 
	print('a = ',a)
	print('b = ',b)
	print('c = ',c)

# 调用
fn(1,3,5,4)

# 结果:
a =  1
b =  3
c =  (5, 4)

***Repl Closed***

  • 可变参数不是必须写在最后,但是需要注意,带星号的参数后的所有参数,必须以关键字参数的形式传递
# 定义函数
def fn(a,*b,c) : 
	print('a = ',a)
	print('b = ',b)
	print('c = ',c)

# 调用
fn(1,3,5,c = 4)

# 结果:
a =  1
b =  (3, 5)
c =  4

***Repl Closed***

  • 如果在形参开头直接写一个*,则要求所有的参数必须以关键字参数的形式传递
# 定义函数
def fn(*,a,b,c) : 
	print('a = ',a)
	print('b = ',b)
	print('c = ',c)

# 调用
fn(a = 1,b = 3,c = 4)

# 结果
a =  1
b =  3
c =  4

***Repl Closed***

  • *形参只能接受位置参数,而不能接受关键字参数
# 定义函数
def fn(*a) : 
	print('a = ',a)

# 调用
fn(a = 1) # 正确调用 fn(1) 

# 结果
TypeError: fn() got an unexpected keyword argument 'a'

  • ** 形参可以接受其它的关键字参数,它会将这些参数统一保存到一个字典中,字典的key就是参数名字,字典的value就是参数的值
    ** 形参只能有一个,必须写在所有参数的最后
# 定义函数
def fn(**a) : 
	print('a = ',a)

# 调用
fn(a = 1,b = 2,c = 3)

# 结果
a =  {'a': 1, 'b': 2, 'c': 3}

***Repl Closed***

5. 参数解包

  • 传递实参时,也可以在序列类型的参数前添加星号
    这样会自动将序列中的元素依次作为参数传递,这里要求序列中元素的个数必须和形参的个数一致
# 定义函数
def fn(a,b,c) : 
	print('a = ',a)
	print('b = ',b)
	print('c = ',c)

t = (10,30,45)

# 调用
fn(*t)

#结果:
a =  10
b =  30
c =  45

***Repl Closed***
  • 通过** 来对一个字典进行解包
# 定义函数
def fn(a,b,c) : 
	print('a = ',a)
	print('b = ',b)
	print('c = ',c)

d = {'a' : 10,'b' : 30,'c' : 45}

# 调用
fn(**d)

# 结果:
a =  10
b =  30
c =  45

***Repl Closed***

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值