一、函数

1.为什么要使用函数?

减少代码的冗余

2.函数先定义后使用(相当于变量一样先定义后使用)

3.函数的分类:

内置函数:python解释器自带的,直接拿来用就行了

自定义函数:根据自己的需求自己定义的函数

def func(): #函数名打印出来的是内存地址

'''注释'''

函数体

4.函数定义都干了些什么事?

只检测语法,不执行代码

5.函数就是一段功能,尽量把函数名定义的有意义

6.定义函数的三种方式:

有参数的函数:就是接受外部传进来的值,进行一系列的运算,最后吧结果返回出来

无参数的函数:通常只是做一下操作而已

空函数:什么事情都不做就是一个空函数(即便是一个空函数,他也会有如下属性)

7.函数的返回值:可返回任意类型的值

什么时候需要有返回值:具体情况具体分析

什么时候没有返回值:具体情况具体分析

8.yield和return的区别

yield 停在那呢,挂起了

yield 能返回多次值;return 返回一次值

yield 保存函数状态

9.函数的调用:函数名加()

10.函数参数

形参:定义函数时括号内写的参数

形参在定义阶段是不占内存空间的,在调用的时候才占用内存空间

实参:在调用函数时括号内传进来的值

函数参数的具体用法

1.位置参数:

1.按照位置传参

按位置定义的形参必须要传值

按位置定义的实参按照位置与形参一一对应的传

2.按照关键字传数:按照key=value的形式定义的实参,传的时候与位置没有关系

def foo(x,y):

pass

foo(1,2) #与形参一一对应

foo(y=2,x=1) #关键字参数,指名道姓的传

foo(1,y=2) #混用位置实参和关键字实参

#混着用时:注意:1.不能给同一个形参重复赋值

2.位置实参必须在关键字实参的前面

2.默认参数:在定义阶段就已经为形参赋值了,意味着在调用阶段就可以不为默认参数传值

如果给默认参数传值了,就把一开始设置的给替换了。

默认参数定义的场景:大多数都是男性,女性很少时就可以设置个默认,当然还有其他场景

注意:1.默认参数必须在位置形参后面

2.默认参数的值只在函数定义阶段生效一次,定义之后的修改不会影响它的值

3.默认参数不要弄成可变类型的,就像是列表,就是一个坑

3.动态参数

可变长度的参数(长度指的是参数的个数):参数*,**

1.*会把多出来的值传给z,并且以元组的形式返回

2.**会把多出来的值传给z,并且以字典的形式返回

3.在实参中只要碰到*(),就是打散了

只要是可迭代的就可以用*

*就相当于for循环的操作,遇到*先打散

*args,**kwargs(可传任意值)

可变长度的参数:从实参的角度推算出形参对应的形式*和**

针对按照位置定义的实参多出来的那部分,会被形参中的*处理,并且保存成元组的形式复制给args

针对按照关键字定义的实参多出来的那部分,会被形参中的**处理,并且保存成字典的形式复制给kwargs

1 # 1.举例一、

2 def foo(x,y,*args):

3 print(x,y)

4 print(args)#args相当于(3, 4, 5, 6, 7, 8, 9),那么*args相当于*(3, 4, 5, 6, 7, 8, 9)

5 print(args[0])

6 print(*args) # 加个*就是把上面的元组给打散了,就还是和原来传实参的时候的形式一样了

7

8 foo(1,2,3,4,5,6,7,8,9)

9 foo(1,2,3,*(4,5,6,7,8,9)) #也可以这样传 就相当于foo(1,2,3,4,5,6,7,8,9)

10

11 # 2.举例二、

12 def bar(x,y,z):

13 print(x,y,z)

14 bar(1,2,3)

15 bar(*['b','a','c']) #bar('b','a','c')

16 bar(*'hel') #bar('h','e','l')

17 bar(*{'a':1,'b':2,'c':3}) #bar('b','a','c')

18 # 强调:如果实参中出现了*和**,第一时间打散了去看

19

20 # 3.举例三、

21 def foo(x,y,**kwargs):

22 print(x,y)

23 print(kwargs) #{'c': 3, 'd': 4, 'f': 6} 吧多余的元素以字典的形式返回了

24 print(*kwargs) #输出c d f ,就是把字典打散了

25 #

26 # foo(1,y=2,c=3,d=4,f=6)

27

28 # 4.举例四、

29 def index(x,y,z=1):

30 print(x,y,z)

31 def wrapper(*args,**kwargs):

32 index(args,kwargs)

33 index(*args, **kwargs) #就是打散了

34 wrapper(1,2,3)

35 wrapper(1,2)

36 wrapper(x=1,y=2)

37 wrapper(1,y=2)

38 '''可变长度的参数:从实参的角度推算出形参对应的形式 * 和 **

39 针对按照位置定义的实参冗余的部分,会被形参中的 * 保存成元组的形式赋值给args

40 针对按照关键定义的实参冗余的部分,会被形参中的 ** 保存成字典的形式赋值给kwargs

41 强调:

42 如果实参中出现了 * 和 **,第一时间打散了去看。

43 '''

强调:

如果实参中出现了*和**,第一时间打散了去看

11.命名关键字参数(了解):在定义阶段,在*之后定义的形参称为命名关键字参数

特点是:在调用阶段,该参数必须以关键字的形式被传值

def foo(x,y,*,a,b):

print(x)

print(y)

print(a)

print(b)

foo(1,2,b=20,a=10)

控制函数调用的时候必须以关键字传参的时候就用命名关键字传参

python参数_python参数的介绍相关推荐

  1. python参数_python 参数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python参数传递时,主要有位置参数和关键字参数. 1. 位置参数:顾名思义, ...

  2. python参数传递_python参数的传递

    >[danger]# 值传递和引用传递 如果你接触过其他的编程语言,比如 C/C++,很容易想到,常见的参数传递有 2 种:值传递和引用传递. >[success]1. 值传递,通常就是拷 ...

  3. python如何调用参数配置文件_python参数设置

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 网上django大部分都是在命令行中运行manage.py时添加参数,没有涉及到 ...

  4. python查看函数参数_python函数参数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 最简单的无参数def functionname(): pass function ...

  5. python中函数参数_Python函数的参数

    本章将介绍函数中参数的用法,更多内容请参考:Python学习指南 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道传递正确的参数,以及函数就返回 ...

  6. python自定义函数参数_python自定义函数的参数之四种表现形式

    (1)def a(x,y):print x,y 这是最常见的定义方式,调用该函数,a(1,2)则x取1,y取2,形参与实参相对应,如果a(1)或者a(1,2,3)则会报错 (2)def a(x,y=3 ...

  7. python 参数_python脚本命令行参数解析

    前言 在python命令行参数的解析模块中,我们常用的就是sys内置模块,但该模块的功能过于原始单一,很多具体的逻辑功能还得靠我们自己手动实现,实在较为麻烦.在这里向大家推荐一个好用的参数解析的模块a ...

  8. python函数的参数可以接收哪些类型的数据_python强势来袭-0015-函数中的参数-送礼开始...

    接上一讲,这节我们专门介绍python函数的参数处理 本节主要内容 函数的形式参数和实际参数 函数的参数定义规则 函数参数的默认值 函数的可变参数 函数的关键字参数 函数的命名关键字参数 1.3. 函 ...

  9. python形式参数和实际参数_python学习笔记3:函数和参数

    函数 函数的参数和返回值 形参(形式参数): 在函数定义的时候用到的参数没有具体值,只是一个占位的符号,成为形参,下例中的peison 实参(实际参数): 在调用函数的时候输入的值:下例中的明月 de ...

最新文章

  1. Android 唯一标识获取
  2. es6 - 解构赋值
  3. docker logstash log docker logs to elasticsearch
  4. 浅析个人网站建设需要注重的建设问题
  5. js 小数取整的函数
  6. WebView性能优化--独立进程
  7. 自创本派高考理数试题集现在发布
  8. Spark on YARN的部署
  9. A2D JS框架 - loadScript实现
  10. 一款严肃而又活泼的少儿学数学软件截图
  11. ACM题库(计蒜客A1001整除问题)
  12. 连接树莓派后斐讯k2路由cpu占用100%
  13. Android——Intent总结
  14. 计算机网络学习记录——模块一 网络互联基础
  15. Python3网络爬虫(十四):跟股神巴菲特学习炒股之财务报表入库(MySQL)
  16. RASP-监控应用的底层,来从根本上发现攻击行为的产生
  17. Ruby完全读书指南
  18. windows11磁盘分区步骤
  19. 微软正打造全新 Edge“Phoenix”浏览器?网友:画蛇添足?
  20. 4.7 设置单元格中文本的行间距 [原创Excel教程]

热门文章

  1. #6682. 梦中的数论(Min25筛)
  2. 【洛谷P4169】天使玩偶/SJY摆棋子【CDQ分治】
  3. Codeforces Round #682 (Div. 2)D Powerful Ksenia ///思维
  4. P3301 [SDOI2013]方程
  5. 牛客题霸 [求平方根] C++题解/答案
  6. CodeForces 1616H Keep XOR Low {a^b≤x} / CodeForces gym102331 Bitwise Xor {a^b≥x}(trie树 + 计数)
  7. 模板:杜教筛(莫比乌斯反演、数论)
  8. CF446D-DZY Loves Games【高斯消元,矩阵乘法】
  9. P2480-[SDOI2010]古代猪文【中国剩余定理,Lucas定理】
  10. jzoj2940-生成输入数据【最小生成树,并查集】