函数的参数python教程
一:函数
什么是函数?

函数就类似于工具 提前定义之后可以反复使用
代码冗余 结构清晰 修改繁杂等问题
二:函数的语法结构
def 函数名(参数1,参数2)
'''函数注释'''
函数体代码
return 函数返回值
1.函数必须先定义后调用
2.函数在定义阶段只会检测函数体语言 不会检测函数体代码
3.函数在调用阶段才会执行函数体代码

三:函数的分类
无参函数
函数在定义阶段括号内没有参数
有参函数
函数在定义阶段括号内要参数
空函数
函数在定义阶段括号内没有参数并且函数体代码为(pass)
# 搭建框架
# 注册登录功能 先空函数先出来
# 定义函数
def register():
pass
# 定义函数
def login():
pass
# 定义一个空字典
func_dic = {'1': register, '2':login}
# 定义循环
while True:
# 定义功能选项
print('''
1.注册
2.登录
''')
# 让用户输入选项
choice = input('请输入您的选项:').strip()
# 判断用户输入在不在字典里面
if choice in func_dic:
# 字典暴露外界的是k,根据字典1拿到函数名
func_naem = func_dic.get(choice)
# 拿到函数名后执行
func_naem()
# 用户输入的编号不存在进入该下
else:
print('功能编号不存在')

四:函数返回值
1.函数体代码没有return关键字
默认返回None
2.函数体代码只要关键字return后面没有跟内容
默认也返回None
函数体代码遇到return立刻结束
3.函数体代码有关键字return并且后面跟了数据
跟了啥就返回啥
如果跟了多个数据逗号隔开会自动组织成元组返回

五:函数的两大分类
形式参数
在函数定义阶段括号内所填写的参数 简称'形参'
def func(a, b):
pass
a和b就是函数func的形参
实际参数
在函数调用的阶段括号内传入的参数 简称'实参'
func(1, 2)
数据1和2就是函数func的实参
形参与实参的关系
我们可以将形参看成是变量名 实参看成是变量值
两者在函数调用阶段临时绑定 函数运行结束断开
形参的表现形式只要一种就是变量名
实参的表现形式有很多种(但是把握核心 就是 数据值\变量值)

六:位置参数
位置参数
按照从左往右的顺序依次填入的参数
位置形参
在函数定义阶段括号内按照从左往右的顺序依次填入的变量名
位置实参
在函数调用阶段括号内按照从左往右的顺序依次传入的数据值
定义一个可以比较大小的函数(传入两个值 返回比较大小)
def choin(a,b):
if a > b:
return a
else:
return b
res = choin(1,2)
print(res)
关键字实参(可以打破位置顺序)
在函数调用阶段通过形参名=数据值的形式指名道姓的传值
1,位置形参与位置实参在函数调用阶段 按照位置一一对应绑定
2,位置参数在绑定的时候多一个不行少一个也不行
格式越简单的越靠前 格式越复杂的越靠后

七:默认参数
位置参数
按照从左往右的顺序依次填入的参数
位置形参
在函数定义阶段括号内按照从左往右的顺序依次填入的变量名
位置实参
在函数调用阶段括号内按照从左往右的顺序依次传入的数据值
定义一个可以比较大小的函数(传入两个值 返回比较大小)
def choin(a,b):
if a > b:
return a
else:
return b
res = choin(1,2)
print(res)
关键字实参(可以打破位置顺序)
在函数调用阶段通过形参名=数据值的形式指名道姓的传值
1,位置形参与位置实参在函数调用阶段 按照位置一一对应绑定
2,位置参数在绑定的时候多一个不行少一个也不行
格式越简单的越靠前 格式越复杂的越靠后
默认参数
默认参数
默认形参
函数在定义阶段就可以给形参赋值了
1.该形参在函数调用阶段如果不给值 则使用默认的
2.该形参在函数调用阶段也可以继续给值 则使用你给的
定义学员注册功能
学员注册功能
'''函数体代码需要什么 可以在形参中就定义什么'''
默认参数 定义学员内大部分男性
def register(name, age, gender='male'):
print('%s:%s:%s' % (name, age, gender))
register('jason', 18)
register('tony', 28)
register('kevin', 38)
女性手动填写
register('lili', 18, 'female')
register('ly', 18, gender='female')
位置形参与默认值形参在定义的时候
位置形参必须在默认值形参的前面
格式越简单的越靠前 格式越复杂的越靠后
笔试题
默认形参如果绑定的是一个列表 那么指向的是固定的一个地址
def func(name, age, hobby=[]):
将age的数据添加到hobby的尾部
hobby.append(age)
print('%s:%s:%s' % (name, age, hobby))
func('jason', 18, [])
func('kevin', 28, [])
func('tony', 38, [])

八:可变长参数
1.函数无论传入多少位置参数都可以正常运行
可变长形参
def func(x,y,*a):
print(x,y,a)
func() # ()
func(1) # (1,)
func(1, 2, 3, 4, 5, 6, 7) # (1, 2, 3, 4, 5, 6, 7)
func(1,2) # 1 2 ()
func(1,2,3,4,5,6,7,8,9) # 1 2 (3, 4, 5, 6, 7, 8, 9)
func(1,2) # 1 2 (3, 4, 5, 6, 7, 8, 9)
*好在形参中使用
用于接收多余的位置参数 并组织成元组的形式赋值给*号后面的变量名
2.函数无论传入多少关键字参数都可以正常运行
def index(x, y, **b):
print(x, y, b)
index() # {}
index(a=1,b=2,c=3,d=4) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}
index(y=2, x=1) # 1 2 {}
index(y=2, x=1, u=222, k=111, l=444) # 1 2 {'u': 222, 'k': 111, 'l': 444}
**号在形参中的使用
用于接收多余的关键字参数 并组织成字典的形式赋值给**号后面的变量名
3.定义一个函数无论传入多少位置参数和关键字参数多可以正常运行
def index(*a,**b):
print(a,b)
index() # () {}
index(1,2,3,4) # (1, 2, 3, 4) {}
index(a=1,b=2,c=3) # () {'a': 1, 'b': 2, 'c': 3}
index(1,2,3,4,a=1,b=2,c=3) # (1, 2, 3, 4) {'a': 1, 'b': 2, 'c': 3}
墨守成规
可变长参数 *与**后面的变量名其实是可以随便定义的
但是python中推荐使用
*args
**kwargs
def index(*args,**kwargs):
pass
def index(a, b, c):
print(a,b,c)
new_list = [11,22,33]
index(new_list) # 肯定不行 列表是一个整体 相当于一个实参
index(new_list[0],new_list[1],new_list[2]) 可以
如果index形参*args 列表里面有很多元素 如何实现按照位置一一传入
def index1(*args):
print(args)
new_list1 = [11,22,33,44,55,66,77,88,99]
index1(*new_list1) # index1(11,22,33,44,55,66,77,88,99)
*号在实参中的使用
会将列表,元组内的元素打散成位置参数的形式一一传值
def index2(**kwargs):
print(kwargs)
new_dict = {'username':'jason','pwd':123}
index2(**new_dict) # index2(username='jason',pwd=123)
{'username': 'jason', 'pwd': 123}
**号在实参中的使用
会将字典内的键值对打散成关键字参数传入

九:函数参数补充(了解)
1.命名关键字参数
def register(name,age,*,sex,height):
pass
register('jason',18,'male',183)
register('lili',18,sex='male',height='1.8m') #正确使用
sex height在传入实参的时候必须以关键字参数的形式
ps:该类型的参数几乎不用 也几乎很少能碰到
什么是名称空间(namespaces)
用于存放变量名与变量值绑定关系的地方(类似于民政局)
名称空间的分类(重要)
1.内置名称空间
python解释器提前给您定义好的
print()
len()
...
2.全局名称空间
在py文件中顶格编写的代码运行之后都会存入全局名称空间
name = 'jason' # name全局
def func(): # func全局
pass
if 1:
a = 123 # a全局
for i in range(10):
print(i) # i全局
while True:
a = 123 # a全局
3.局部名称空间
函数体代码运行之后产生的都是具备名称空间
存活周期
1.内置名称空间
python解释器启动与关闭而创建和销毁
2.全局名称空间
随着py文件的运行与结束而创建和销毁
3.局部名称空间
随着函数体代码的执行与结束而创建和销毁

十:名字的查找顺序
在查找名字的时候 要先确定自己当前在哪
1.如果你在局部
局部>>>全局>>>内置
2.如果你在全局
全局>>>内置
局部名称空间的嵌套
函数在定义阶段名字的查找顺序就已经固定死了
x = 111
def f1():
x = 222
def f2():
x = 333
def f3():
x = 444
def f4():
x = 555
print(x)
x = 555 特例
f4()
f3()
f2()
通过调用f1 执行所有的函数
f1()

函数的参数python教程的更多相关文章
- Python基本语法_函数属性 & 参数类型 & 偏函数的应用
目录 目录 前言 软件环境 Python Module的程序入口 函数的属性 Python函数的创建 函数的参数 必备参数 缺省参数 命名参数 不定长参数 匿名参数 偏函数的应用 前言 Python除 ...
- Python---8函数(函数的参数&递归函数)
一.函数的参数 Python的函数定义非常简单,但灵活度却非常大.除了正常定义的必选参数外,还可以使用默认参数.可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代 ...
- Python 函数的参数知识汇总
函数搞不熟,后边就晕头转向了,在此重新归纳一下廖大神的函数教程,加深记忆 一.函数的参数分为: 位置参数 def power(x): # x 就是power(x)的一个位置参数,我们调用power(x ...
- python学习笔记之函数的参数
函数的参数有位置参数和关键字参数,位置参数一定要在关键字参数的前面,位置参数的优先级是高于关键字参数的,否则会报错 def my_abs(a,b): print(a) print(b) my_abs( ...
- Python 4 函数的参数,内置函数,装饰器,生成器,迭代器,
一.函数的参数: 1.位置参数:调用函数时根据函数定义的参数位置来传递参数. 2.关键字参数:用于函数调用,通过“键-值”形式加以指定.可以让函数更加清晰.容易使用,同时也清除了参数的顺序需求. 3. ...
- Python中函数传递参数有四种形式
Python中函数传递参数有四种形式 fun1(a,b,c) fun2(a=1,b=2,c=3) fun3(*args) fun4(**kargs) 四种中最常见是前两种,基本上一般点的教程都会涉及, ...
- python 函数传递参数的多种方法
python中函数根据是否有返回值可以分为四种:无参数无返回值,无参数有返回值,有参数无返回值,有参数有返回值. Python中函数传递参数的形式主要有以下五种,分别为位置传递,关键字传递,默认值传递 ...
- 简明python教程 --C++程序员的视角(二):函数及作用域
函数通过def关键字定义.def关键字后跟一个函数的标识符名称,然后跟一对圆括号.圆括号之中可以包括一些变量名,该行以冒号结尾.接下来是一块语句,它们是函数体. 函数的基本概念 1 位置:从左往右进行 ...
- python基础——函数的参数
python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...
随机推荐
- xcode使用spdlog(1.7)总结
!!版权声明:本文为博主原创文章,版权归原文作者和博客园共有,谢绝任何形式的 转载!! 作者:mohist 注意️ 请选择对c++11支持完善的编译器, 因为spdlog一直更新. 本文演示环境: m ...
- MFC屏蔽按键ESC、ENTER、Alt+F4
1.重写 重写下面的函数 virtual BOOL PreTranslateMessage(MSG* pMsg); 2.函数体 BOOL Cfile_trans_codeDlg::PreTransla ...
- 【LeetCode】975. Odd Even Jump 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 动态规划 日期 题目地址:https://leetc ...
- 【LeetCode】915. Partition Array into Disjoint Intervals 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/partitio ...
- P1599 货币
背景 又是一道水题 描述 在某个神秘的星球上有一种货币,它有一种奇怪的兑换规则 你有且仅有一枚面值为n的金币,你可以去银行进行兑换,也可以不兑换 如果去银行兑换,兑换的规则是这样的:用面值为a的金币去 ...
- 【漏洞复现】ThinkAdmin v5和v6 未授权列目录任意文件读取(CVE-2020-25540)
ThinkAdmin v5和v6 未授权列目录/任意文件读取(CVE-2020-25540) 漏洞简介 ThinkAdmin是一套基于ThinkPHP框架的通用后台管理系统.ThinkAdmin v6 ...
- 一站式元数据治理平台——Datahub入门宝典
随着数字化转型的工作推进,数据治理的工作已经被越来越多的公司提上了日程.作为新一代的元数据管理平台,Datahub在近一年的时间里发展迅猛,大有取代老牌元数据管理工具Atlas之势.国内Datahub ...
- HTML5 +Java基础 大一结业认证考试试题 - 云南农业职业技术学院 - 互联网技术学院 - 美和易思校企合作专业
第1题 [单选题][0.33分][概念理解] 关于java中的逻辑运算符,下列说法正确的是 逻辑运算符||.&&.!都是用于连接两个关系表达式</p> 当&&am ...
- 关于 Spring-WebFlux 的一些想法
本文是本人在知乎提问 spring webflux现在看来是否成功? 下的回答,其他回答也很精彩,如果感兴趣可以查看 现在基于 spring web 的同步微服务有一个非常大的缺陷就是:相对于基于 s ...
- CentOS7.6下安装Redis5.0.7
此次安装是在CentOS7下安装Redis5.0.7 一.首先准备Redis安装包 这里下载的是 redis-5.0.7.tar.gz 安装包,并将其直接放在了 root ⽬录下 压缩包下载地址:ht ...