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惊群效应引起的系统高负载

    https://zhuanlan.zhihu.com/p/401910162 原创:蒋院波 导语:本文从进程状态,进程启动方式,网络io多路复用纬度等方面知识,分享解决系统高负载低利用率的案例 前言: ...

  2. 【转帖】【奇淫技巧】Linux | 查找文件,无所遁形

    theme: channing-cyan 本文正在参与 "走过Linux 三十年"话题征文活动 在Linux系统上,最常见的操作莫过于处理文本.常见文件操作陈列.查找.排序.格式转 ...

  3. [转帖]MIPS和ARM授权差异引起的龙芯路线变迁

    https://zhuanlan.zhihu.com/p/99807721 一.MIPS和ARM授权的异同 MIPS授权和ARM授权都分为处理器核授权(Core License)和架构授权(Archi ...

  4. [转帖]Linux性能调优之内存负载调优的一些笔记

    https://zhuanlan.zhihu.com/p/548770928 写在前面 整理一些Linux内存调优的笔记,分享给小伙伴 博文没有涉及的Demo,理论方法偏多,可以用作内存调优入门 博文 ...

  5. 飞腾2000+银河麒麟v10安装redis的注意事项

    先说一下结论 无法复用ubuntu上面编译的二进制文件 无法直接使用docker官网下面的arm64的镜像运行 无法直接使用redis6.0.10最新版本编译运行 可以使用redis5.0.4 进行编 ...

  6. ELK运维文档

    Logstash 目录 Logstash Monitoring API Node Info API Plugins Info API Node Stats API Hot Threads API lo ...

  7. golang: 模仿 VictoriaMetrics 中的做法,通过把局部变量放在自定义 Context 对象中来做到hot path 的 0 alloc

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 使用 benchmark 压测过程中通常会出现这样的信息: ...

  8. Python笔记四之协程

    本文首发于公众号:Hunter后端 原文链接:Python笔记四之协程 协程是一种运行在单线程下的并发编程模型,它的特点是能够在一个线程内实现多个任务的并发操作,通过在执行任务时主动让出执行权,让其他 ...

  9. SqlSugar多库/多租户

    1. 多库和多租户 如果是接口ISugarClient先看一下标题6,看完在看这儿 1.1 固定多数据库模式 数据库数量是固定的一般在声明的全部加上 //通过ConfigId进行数据库区分 var d ...

  10. GPTs prompts灵感库:创意无限,专业级创作指南,打造吸睛之作的秘诀

    GPTs prompts灵感库:创意无限,专业级创作指南,打造吸睛之作的秘诀 优质prompt展示 1.1 极简翻译 中英文转换 你是一个极简翻译工具,请在对话中遵循以下规则: - Prohibit ...