python 函数之传参

一、参数的两大分类

1、形式参数
在'函数定义阶段'括号内依次写入的变量名就叫形式参数,简称"形参"

1
2
def index(a,b,c,d,e):
pass

# a,b就称之为是函数的形参

补充:type在形参中的用法

1
2
3
4
5
def my_function(param: int):
    print(param * 2)
    # 参数类型限制为整数类型
    # 进行相应的处理
my_function(12)

: int指定了参数param的类型应为整数。当传入其他类型的参数时,Python解释器可能会给出警告或错误。

2、实际参数
在'函数调用阶段'括号内依次传入的变量值就叫实际参数,简称"实参"

index(1, 2, 3)

# 1,2,3就称之为是函数的实参

二、位置参数和关键字参数(核心)、默认参数

1、位置参数

在函数'定义阶段'括号内从'左往右依次'写入的'变量名'就是位置形参

1
2
def index(a,b,c,d):
pass

# a,b,c,d就是位置形参

2、关键字参数(k=v)

在函数的'调用阶段'括号内从'左往右依次'写入的'数据值'就是位置实参
register(‘age’=18, ‘name’='kevin', ‘gender’='female')

3、默认参数

# 前提是默认的形参

  • 在函数定义阶段就可以给参数赋值了
  • 如果你在函数调用阶段,没有给形参传值,那就是要默认的
  • 如果你在函数调用阶段,给形参传值了,就是要你传的值

练习1: 

1
2
3
def register(name, age, gender='male'):
    print('%s:%s:%s' % (name, age, gender))
register('kevin', 18,)

练习2:如果默认值是列表的话,比特特殊:以后所有调用该函数的时候,hobby用的都是一个

1
2
3
def register(name, age, hobby=[]):
   hobby.append(age)
   print('%s:%s:%s' % (name, age, hobby))

三、可变长参数(重点)

1、不管我在调用函数的时候,传入多少个位置参数,都能正常运行

def index(name, password, x, y, *a):
    print(name, password, x, y,a)
index('jignzhi', 123, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

*号在形参中的使用:会接收多余的位置参数

返回值为元组类型

2、不管我们在调用函数的时候,传入多少个关键字参数,都能正常运行

1
2
3
4
def index(username, age, gender, **a):
    print(username, age, gender, a)
 
index('jingziz', 18, 'male', tell=123, hobby='climb')

**号在形参中的使用:接收多余的关键字参数

返回值为字典类型

3.、不管我传入多少个位置参数和关键字参数,函数都能正常运行

1
2
def index(*a, **b):
print(a, b)

*号和**号后面的变量可以任意起名,遵循变量的命名即可
在python中,推荐使用

*args: arguments 位置参数
**kwargs: keyword arguments 关键字参数

以后在定义函数的时候,如果我们不知道要传递多少个参数,我们就可以如下定义

1
2
def index(*args, **kwargs):
pass

4、*在实参中的使用,就是把列表、元组中的一个一个元素打散,然后以位置参数的形式传递

1
2
3
4
5
6
def index(*args):
    print(args)
l = [1, 2, 3, 4, 5, 6, 7, 8, 9, ]
index(*l)
 
# 元组也一样

5、**号在实参中的使用:把字典打散成关键字的形式进行传递

1
2
3
4
def func(**kwargs):
    print(kwargs)
d = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
func(**d)

6、其他参数

def register(name, age, *, sex, height):
    print(name, age, sex, height)
register('lili', 18, sex='male', height='1.8m')

四、名称空间

1、绑定变量名与变量值关系的地方

2、分类

  • 内置名称空间
  • 局部名称空间
  • 全局名称空间

名字的查找:
先看你自己再哪个位置
全局 >>> 内置
先看你自己再哪个位置
局部 >>> 全局 >>> 内置

 

posted @   凡人半睁眼  阅读(209)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示