1.函数定义处(默认形参在函数的定义)

1.1.函数的调用处(关键字实参在函数的调用处)

2.收集参数

(1)收集参数:
(1) 普通收集参数
在参数的前面加一个*,代表的是普通收集参数
作用:收集多余的没人要的普通实参,构成一个元组 (2)关键字收集参数
在参数的前面加上两个*,代表的是关键字收集参数
作用:收集多余的没人要的关键字实参,构成一个字典

  

3.命名关键字参数

命名关键字参数
def func(参数1,参数2,*,参数3):
(1) 在 * 号后面定义的参数是命名关键字参数
def func(*args,参数,**kwargs):
(2) 在普通收集和关键字收集参数之间的,是命名关键字参数
如果是命名关键字参数,必须使用关键字实参的形式调用 #(1) 定义方式一
def func(a,b,*,c):
print(a,b)
print(c)
#函数的调用处 #(2)定义方式二
def func(*args,dd,**kwargs):
print(args)
print(kwargs)
print(dd)

  

3.1 关于 * 和 ** 的使用方法

在函数的定义处,* 和 **用来接收数据,*打包成一个元组,**打开成一个字典
在函数的调用处,*和**用来解包结束,*一般应用在列表或元组,**一般用在字典 # * 一个星条用处的用法
def func(a,b,*,c,d):
print(a,b) #1,2
print(c,d) #3,4
#函数的调用处
func(1,2,c=4,d=4)
lst[1,2]
# *lst =>把列表里面的每一个元素都打散拿出来,当成参数赋值给func进行调用
func(*lst,c=3,d=4) # **两个星调用处的语法
func(1,2,c=3,d=4)
# **dic <==> 把字典里面的键值对拿出来,转换成关键字实参的形式,当成参数赋值给func进行调用
dic = {'c':3,'d':4}
func(1,2,**dic) #c=3,d=4 #定义处的*号用法 和 调用处的*号用法,是一对相反操作
一个用来打包,一个用来解包
优点:控制了参数的个数

  

参数的顺序
形参顺序:
普通形参-->默认形参-->普通收集参数-->命名关键字参数-->关键字收集参数 #收集所有实参
def func(*args,**kwargs):
pass

  

4.return自定义返回值

return 自定义返回值
函数可以自定义返回值,通过return,return会把这个值返回到函数的调用处
(1) return + 返回值 后面出了可以接6大标准数据类型之外,还可以返回函数和类对象
如果没有定义任何返回值,默认返回的是None
(2)在函数中,如果只选了return,一位这立刻终止函数,后面的代码统统不执行 (1) return + 可返回的类型
(2) return之后意味着立刻终止函数,后面的代码不执行

  

5.全局变量和局部变量

局部变量:在函数内部定义的变量就是局部变量(局部命名空间)
全局变量:在函数外面定义的变量,或者在函数内部用global关键字定义是全局变量(全局命名空间)
作用域:作用的范围
局部变量的作用的范围仅仅限定在函数的内部
全局变量的作用的范围横跨整个文件
生命周期:
内置命名空间> 全局命名空间>局部命名空间
内置变量 > 全局变量 > 局部变量 #(1) 局部变量
def func():
#定义一个局部变量
a =1
#获取局部变量
print(a)
#修改局部变量
a = 20
print(a)
func()
print(a) error 局部外无法获取局部内变量的值 (2) 全局变量
1.定义全局变量
c =100
2.获取全局变量
print(c)
3.修改全局变量
c =200
print(c) (3) 在函数内部定义全局变量global
def func():
#标记d这个变量是一个全局变量
global d
d = 400
print(d) #400
func()
print(d) #400 因为在局部内声明了一个全局变量,所以在局部外也能用 (4) 在函数内部可以修改全局变量
e =500
def func():
global e #声明e为全局变量
e = 600 #修改全局变量
print(e) #600
func()
print(e) #600

  

5.1global 全局变量的作用域:

如果函数外部有这个全局变量,在函数内部使用global关键字,可以修改全局变量
如果函数外部没有这个全局变量,在函数内部使用global关键字,可以定义全局变量 在函数内部可以直接获取全局变量
但是无法直接修改全局变量,需要通过global f = 101
def func():
f = 102
print(f) #102 用局部自己的
func()
print(f) #101 f = 101
def func():
print(f) #101 函数内部可以直接获取全局变量
func()
print(f) #101

  

6.函数名的使用

函数名的使用
python中的函数可以像变量一样,动态创建,销毁,当参数传递,作为返回值,也叫作第一类对象,其他语言不能比拟功能有限
1.函数名是个特殊的变量,可以当做变量赋值 def func1():
print('我是func1')
return 111
res = func1()
print(res) #动态创建函数
print(func1)
func = func1
func() #动态撤销函数
del func()
func()

  

6.2函数名可以作为容器类型数据的元素
def func2():
print('我是func2')
def func3():
print('我是func3')
def func4():
print('我是func4')
return 'func'
lst = [func2,func3,func4]
for i in lst:
i()

  

3.函数名可以作为函数的参数
def myfunc(f):
res = f()
print(res) #f <==> func4 <==> res <==> func4() print(res)
myfunc(func4)

  

#4.函数名可作为函数的返回值
def myfunc2(f):
return f f2 = myfunc2(func4)
print(f2)
f2()

  

#__doc__  或者help查看文档
# 模拟一个吃猪大肠的过程
def eat_big_chang(something):
'''
功能:模拟一个吃猪大肠的过程
参数:吃什么?
返回:吃没吃完?
'''
print("step1=>先把{}洗一洗".format(something))
print("step2=>找肠子头放嘴里")
print("step3=>使劲嘬")
print("step4=>吃完了,满意的放下肠子")
return "真好吃~"
res =eat_big_chang('大肠')
print(res) #函数.__doc__ =>>获取函数的帮助文档
print(eat_big_chang.__doc__)

  

总结:

今天讲了默认形参和关键字实参,收集参数,命名关键字参数,return自定义返回值,全局变量和局部变量一级函数名的使用。

默认形参在函数的定义,定义处参数相当于k=v的形式,关键字在函数的调用处k=v的形式。

收集参数:

(1)普通收集参数:在参数的前面加上一个*,代表的是普通收集参数。作用是收集多余的没人要的普通实参,构成一个元组

(2)关键字收集参数:在参数的前面加上两个*,代表的是关键字收集参数,作用是收集多余的没人要的关键字实参,构成一个字典

命名关键字参数:

(1)在*号后面定义的参数是命名关键字参数

(2)在普通收集和关键字收集参数之间的,是命名关键字参数

调用:必须使用关键字实参的形式调用

* 和 **的使用方法:

在函数的定义处,*和**用来接收数据,*打包成一个元组,**打包成一个字典

在函数的调用处,*和**用来解包数据,*一般应用在列表或元组,**一般用在字典

参数的顺序

形参声明的位置顺序:

普通形参->默认形参->普通收集参数->命名关键字形参->关键字收集参数

return 自定义返回值

函数可以自定义返回值,通过return,return会把这个值返回到函数的调用处。

return后面可以跟6大数据类型同时还可以返回函数和类对象,如果没有当以返回值,默认返回的是None

return也可以终止函数

全局变量和局部变量:

局部变量:在函数内部定义的变量就是局部变量(局部命名空间)

全局变量:在函数外面定义的变量,或者在函数内部用global关键字定义的全局变量(全局命名空间)

作用范围:

局部变量的作用范围仅仅是限定在函数的内部

全局变量的作用范围横跨整个文件

生命周期的:

内置命名空间 > 全局命名空间 >局部命名空间

内置变量 >全局变量 >局部变量

1.当在局部内定义一个变量,在局部外是无法获取局部内的变量的值

2.在局部在定义一个变量,局部内没有定义变量时,可以获取局部外的变量

3.在函数内部定义全局变量global,在局部外可以获取局部内的变量

4.在局部外定义一个变量,然后再局部内声明这个变量为全局变量global,然后在局部内修改这个全局变量,外部调用这个变量是修改后的变量。

函数名的使用:可以当做变量赋值,动态创建函数,动态销毁函数,函数名可以作为容器类型数据的元素,for循环遍历然后得到的变量名+()就直接可以调用函数。同时函数名也可以作为函数的参数传参,也可以作为函数的返回值。

最后讲了一个查看函数帮助文档的用法 ------->  函数名.__doc__

默认形参和关键字实参,收集参数,命名关键字参数,return自定义返回,全局变量和局部变量,函数名的使用---day10的更多相关文章

  1. Day5 - 06 函数的参数-命名关键字参数

    引子:对于关键字参数,调用时可以传入任意个不受限制的关键字参数,至于到底传入了哪些,就需要在函数内部通过[函数里定义的关键字参数]检查,例子里就是通过otherinfo检查.        >& ...

  2. day11:return关键字&全局/局部变量&函数名的使用&函数的嵌套&nonlocal关键字&locals/globals

    关键字:return 自定义函数的返回值,return可以把值返回到函数的调用处        1.return+六大标准数据类型,还有类和对象,函数        如果不定义return,默认返回的 ...

  3. day09-Python运维开发基础(函数收集参数、命名关键字参数与返回值、函数名的特殊使用及 全局/局部变量详解)

    1. 函数收集参数.命名关键字参数与返回值.函数名的特殊使用 # ### 默认形参 和 关键字实参 # 默认形参和 关键字实参 在写法上是一样 # 函数的定义处 """默 ...

  4. 函数、可变参数、keyword-only参数、实参解构

    函数的数学定义:y=f(x) ,y是x的函数,x是自变量.y=f(x0, x1, ..., xn) python中的函数: 由函数名称.参数列表.和若干语句组成的语句块构成,完成一定的功能,是组织代码 ...

  5. Java可变参数 & Python可变参数 & Scala可变参数

    Java 可变参数的特点: (1).只能出现在参数列表的最后: (2)....位于变量类型和变量名之间,前后有无空格都可以: (3).调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体 ...

  6. 洗礼灵魂,修炼python(21)--自定义函数(2)—函数文档,doctest模块,形参,实参,默认参数,关键字参数,收集参数,位置参数

    函数文档 1.什么是函数文档: 就是放在函数体之前的一段说明,其本身是一段字符串,一个完整的函数需要带有函数文档,这样利于他人阅读,方便理解此函数的作用,能做什么运算 2.怎么查看函数文档: func ...

  7. python3 函数的形参、实参、位置参数、默认参数、关键字参数以及函数的递归

    python 版本 3.5 #Author by Andy#_*_ coding:utf-8 _*_def func(x,y=2): print('我是形参%s'%x) print('我是默认参y-- ...

  8. 第十一篇 Python函数之定义&形参&实参&位置参数&关键字参数&可变长参数&默认参数

    函数的定义:函数是为了完成某一特定功能的,函数是逻辑结构化和过程化的一种编程方法 函数的定义格式,函数一般都是有返回值的 #语法 #函数名要能反映其意义 def 函数名(参数1,参数2,参数3,... ...

  9. python函数—形参、实参、位置参数、关键字参数

    1.通过def function_name([parameter]): 定义,函数一遇到return即结束运行.如果函数没有定义返回值,则返回None,如果定义了一个返回值,则返回该对象,如果一个re ...

  10. Python 必选参数,默认参数,可变参数,关键字参数和命名关键字参数

    Py的参数还真是多,用起来还是很方便的,这么多参数种类可见它在工程上的实用性还是非常广泛的. 挺有意思的,本文主要参照Liaoxuefeng的Python教程. #必选参数 def quadratic ...

随机推荐

  1. 【转帖】nginx变量使用方法详解-1

    https://www.diewufeiyang.com/post/575.html Nginx 的配置文件使用的就是一门微型的编程语言,许多真实世界里的 Nginx 配置文件其实就是一个一个的小程序 ...

  2. [转帖]比 Python 快 35000 倍!LLVM&Swift 之父宣布全新编程语言 Mojo:编程被颠覆了

    https://www.infoq.cn/article/GFfVLVpkIGOcKYB85Opb "Mojo 可能是近几十年来最大的编程语言进步." 近日,由 LLVM 和 Sw ...

  3. [转帖]nginx的luajit安装luarocks并安装luafilesystem

    nginx的luajit安装luarocks并安装luafilesystem by admin on 2015-07-11 08:05:23 in , 69次 标题有点绕口.我尽量把关键词都贴进去.之 ...

  4. ESXi 虚拟机性能情况简单验证

    1.虚拟化的CPU超售问题. 经过查找资料, 发现 ESXi 5.5 的版本 一个 物理CPU的Core 可以虚拟出 25个vCPU, 升级到ESXi6.0 之后可以虚拟化32个vCPU. 所以虚拟化 ...

  5. 【k哥爬虫普法】爬虫第一案,侵犯个人隐私,“入侵”短视频服务器!

    我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识, ...

  6. 【JS 逆向百例】W店UA,OB反混淆,抓包替换CORS跨域错误分析

    关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后 ...

  7. 提升vscode的搜索速度

    在全局搜索速度上vscode比pycharm要慢不少,尤其是对于我们这种近二十年历史的项目代码来说特别明显,所以这里记录一下我是如何加快vscode的搜索速度的. 官方的搜索建议 https://co ...

  8. C/C++ Qt 使用JSON解析库 [修改篇]

    JSON是一种轻量级的数据交换格式,它是基于ECMAScript的一个子集,使用完全独立于编程语言的文本格式来存储和表示数据,简洁清晰的的层次结构使得JSON成为理想的数据交换语言,Qt库为JSON的 ...

  9. Python 字符串与字节数组转换

    整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 16进制转10进制: int('0x10', 16) ==> 16 类似的还有oct(), bin() 字符串 ...

  10. 利用Docker、云服务器、mongodb搭建自己的测试平台

    准备一个云服务器 购买一个云服务器,在阿里云,腾讯云上购买即可. 然后创建一个实例,安装Linux操作系统,我安装的是CentOS. 记住账号和密码,可以使用ssh远程登录即可.   搭建测试环境 D ...