函数的基本属性

1.1 函数的含义

  1. # 1、功能 :包裹代码,实现功能,达到目的
  2. # 2、特点 :反复调用,提高开发效率,便于代码维护

1.1.2 函数的基本格式

  1. # 函数名 :变量命名规则
  2. # 函数的定义
  3. def func():
  4. pass
  5. # 函数的调用
  6. func()

1.2 函数的参数

1.2.1形式参数(函数定义处)

  1. # 形式参数的顺序
  2. # 位置参数 > 默认参数 > *args > 命名关键字参数 > **kwargs

1.2.1.1 位置参数

  1. def func(a,b):
  2. print(a,b)

1.2.1.2 默认参数

  1. def func(a = 0,b = 9):
  2. print(a,b)

1.2.1.3 位置参数 + 默认参数

  1. """
  2. 默认形参必须跟在位置形参的身后,顺序是一定的
  3. """
  4. def func(a ,b ,c = 4 , d = 5):
  5. print(a,b,c,d)

1.2.2 实际参数(函数调用处)

1.2.2.1 位置传参

  1. """
  2. 在函数调用时:实参数量及顺序需要与形参一一对应
  3. """
  4. def func(a,b):
  5. print(a,b)
  6. func(5,8) # 5 8
  7. func(8,5) # 8 5

1.2.2.2 关键字传参

  1. """
  2. 在函数调用时:
  3. 如果给予实参,那么直接使用实际参数
  4. 如果没有给予实参,那么使用参数默认自带的值
  5. """
  6. def func(a = 0,b = 9):
  7. print(a,b)
  8. func(5,8) # 5 8
  9. func(8,5) # 8 5
  10. func(1) # 1 9

1.2.2.3 位置传参 + 关键字传参

  1. """
  2. 1、关键字传参是对具体的某个参数赋值,具体的顺序可以打乱
  3. 2、关键字实参必须跟在位置实参的身后,顺序是一定的
  4. 3、默认参数和关键字实参 在写法上一模一样
  5. 一个是在函数的定义处
  6. 一个是在函数的调用处
  7. """
  8. def func(a,b,c,d,name = "name",age = 18):
  9. print(a,b,c,d,name,age)
  10.  
  11. func(1,2,3,4,age = 20 , name = "bajie") # 1 2 3 4 bajie 20
  12. func(1,2,3,age = 20,4 , name = "bajie") # error

1.2.3 收集参数( *args , **kwargs)

1.2.3.1 收集参数 (在函数的定义处 -----> 聚合)

  1. # *args 在函数的定义处专门用来收集多余的没人要的 位置实参
  2. def func(a,b,c,*args):
  3. print(a,b,c) # 1 2 3
  4. print(args) # (4, 5, 5, 6, 7, 8)
  5.  
  6. func(1,2,3,4,5,5,6,7,8)

  7. # **kwarge 在函数的定义处专门用来收集多余的没人要的 关键字实参
  8. def func(a=1,b=2,c=3,**kwargs):
  9. print(a,b,c) # 15 16 17
  10. print(kwargs) # {'f': 1, 'g': 2, 'j': 3}

  11. func(f=1,g=2,j=3,a=15,b=16,c=17)

1.2.3.2 收集参数 (在函数的调用处 -----> 打散)

  1. # * 把列表里面的所有元素拿出来,当成参数一个一个赋值给func进行调用
  2. def func(a,b,c = 5,d = 6):
  3. print(a,b) # 1 2
  4. print(c,d)
  5.  
  6. lst = [1,2]
  7. func(*lst,c=3,d=4)
  1. # **把字典里面的所有元素拿出来,拼装成键=值的参数形式,赋值给func进行调用
    def func(a,b,c = 5,d = 6):
    print(a,b)
    print(c,d)              # 3 4
       
    dic = {"c":3,"d":4}
    func(1,2,**dic,)

1.2.3.3 练习示例

  1. # 任意个数字符串的拼接
  2. """
  3. 班长:宋云杰
  4. 班花:刘彩霞
  5. 班草:刘子涛
  6. 吃瓜群众:牧树人,晏国彰,刘聪
  7. """
  8. def func(**kwargs):
  9. print(kwargs)
  10. # 定义一个字典,存放每一位同学的身份
  11. dic = {"monitor":"班长","class_flower":"班花","class_grass":"班草"}
  12. strvar1 = ""
  13. strvar2 = ""
  14.  
  15. # 遍历字典中的键值对
  16. for k,v in kwargs.items():
  17. print(k,v) # monitor 宋云杰 class_flower 刘彩霞 class_grass 刘子涛 ....
  18. # 判断键是否在字典当中,如果在,获取对应的身份,拼装成字符串
  19. if k in dic:
  20. strvar1 += dic[k] + ":" + v + "\n" # 班长 + ":" + 宋云杰 + '\n'
  21. else:
  22. strvar2 += v + ","
  23.  
  24. # 去掉右边多余的\n和,形成最后的效果
  25. print(strvar1.strip())
  26. print("吃瓜群众:"+ strvar2.rstrip(","))

1.2.4 命名关键字参数

  1. """
  2. 定义命名关键字参数的两种方式:(在函数调用时,必须使用命名关键字参数来进行赋值)
  3. (1)def func(a,b,*,c) c是命名关键字
  4. (2)def func(*args,c,**kwargs) c是命名关键字参数
  5. """
  6. # 定义方式一
  7. def func(a,b,*,d,c):
  8. print(a,b) # 1 2
  9. print(d) # 3
  10. print(c) # 10
  11.  
  12. func(1,2,d = 3,c=10)

  13. # 定义方式二
  14. def func(*args,c,**kwargs):
  15. print(args) # (1, 2, 3, 4, 5, 6)
  16. print(c) # 100
  17. print(kwargs) # {'a': 1, 'b': 2, 'd': 6}
  18.  
  19. func(1,2,3,4,5,6,a=1,b=2,d=6,c=100)

1.2.5 参数练习题

  1. # 读代码测结果
  2. def f1(a, b, c=0, *args, **kw):
  3. print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)

  4. def f2(a, b, c=0, *, d, **kw):
  5. print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)

  6. # 以上两个函数 打印结果
  7. #(一)
  8. f1(1, 2)
  9. f1(1, 2, c=3)
  10. f1(1, 2, 3, 'a', 'b')
  11. f1(1, 2, 3, 'a', 'b', x=99)
  12. f2(1, 2, d=99, ext=None)

  13. #(二)
  14. args = (1, 2, 3, 4)
  15. kw = {'d': 99, 'x': '#'}
  16. f1(*args, **kw)

  17. #(三)
  18. myargs = (1, 2, 3)
  19. mykw = {'d': 88, 'x': '#'}
  20. f2(*myargs, **mykw)

  21. #(四)
  22. def f1(a, b, c=0, *args,d,**kw):
  23. print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
  24. print(d)
  25. f1(1,2,3, 'a', 'b',d=67, x=99,y=77)

 

day10 python之函数的参数的更多相关文章

  1. python基础——函数的参数

    python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...

  2. Python进阶-函数默认参数

    Python进阶-函数默认参数 写在前面 如非特别说明,下文均基于Python3 一.默认参数 python为了简化函数的调用,提供了默认参数机制: def pow(x, n = 2): r = 1 ...

  3. 深入理解python中函数传递参数是值传递还是引用传递

    深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用 ...

  4. Python中函数传递参数有四种形式

    Python中函数传递参数有四种形式 fun1(a,b,c) fun2(a=1,b=2,c=3) fun3(*args) fun4(**kargs) 四种中最常见是前两种,基本上一般点的教程都会涉及, ...

  5. 讲讲python中函数的参数

    python中函数的参数 形参:定义函数时代表函数的形式参数 实参:调用函数时传入的实际参数 列如: def f(x,y): # x,y形参 print(x, y) f(1, 2) # 1, 2 实参 ...

  6. python 中函数的参数

    一.python中的函数参数形式 python中函数一般有四种表现形式: 1.def function(arg1, arg2, arg3...) 这种是python中最常见的一中函数参数定义形式,函数 ...

  7. python中函数的参数解析

    python中函数的各种参数梳理: 1.形参:函数定义时传入的参数 2.实参:函数调用时传入的参数 (有形参必传实参,形参里自身特点可不传的,可传可不传) 3.缺省参数:不传为默认值,传了会覆盖(下面 ...

  8. python 之 函数的参数

    函数的参数好几种类型:包括位置参数.默认参数.可变参数.关键字参数.命名关键字参数. 廖大神python学习笔记,大神网站:百度搜索“廖雪峰的官网” 1.位置参数:调用函数时根据函数定义的参数位置来传 ...

  9. Python基础 --函数的参数

    定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解 ...

随机推荐

  1. Andrew Ng - 深度学习工程师 - Part 1. 神经网络和深度学习(Week 4. 深层神经网络)

     =================第2周 神经网络基础=============== ===4.1  深层神经网络=== Although for any given problem it migh ...

  2. 一不小心,我就上传了 279674 字的 MySQL 学习资料到 github 上了

    自从2019年11月我们出版了<千金良方--MySQL 性能优化金字塔法则>一书之后,持续不断有人来询问我MySQL 4 个系统字典库相关的问题,因为篇幅原因,书中并没有完整收录4个字典库 ...

  3. 线性dp 打鼹鼠

    鼹鼠是一种很喜欢挖洞的动物,但每过一定的时间,它还是喜欢把头探出到地面上来透透气的.根据这个特点阿Q编写了一个打鼹鼠的游戏:在一个n*n 的网格中,在某些时刻鼹鼠会在某一个网格探出头来透透气.你可以控 ...

  4. Jenkins 主题:jenkins-theme-v2

    说明 本次样式是基于 Jenkins ver. 2.235.1 写的,所有对于之前的版本可能样式不兼容,好像变化挺大的.个人测试了在用的 Jenkins ver. 2.190.1,完全不行,所有建议想 ...

  5. 服务消费者(Feign-下)

    上一篇文章中已经讲述 Feign的基本用法,本章主要概述 FeignClient GET/POST/PUT/DELETE restful写法以及 Feign 拦截器,与配置优化方案,关闭HttpCli ...

  6. 20 个 CSS高级样式技巧汇总

    使用技巧会让人变的越来越懒,没错,我就是想让你变懒.下面是我收集的CSS高级技巧,希望你懒出境界. 1. 黑白图像 这段代码会让你的彩色照片显示为黑白照片,是不是很酷? img.desaturate ...

  7. nth-child,nth-last-child,after,before,tab-highlight-color,first-child,last-child

    nth-child:定义第几个元素或者是奇数或者是偶数,或者满足某个数字倍数的dom的样式 如 li:nth-child(3n),结果如下,li:nth-child(2)结果如下

  8. 【线型DP】【LCS】洛谷P4303 [AHOI2006]基因匹配

    P4303 [AHOI2006]基因匹配 标签(空格分隔): 考试题 nt题 LCS优化 [题目] 卡卡昨天晚上做梦梦见他和可可来到了另外一个星球,这个星球上生物的DNA序列由无数种碱基排列而成(地球 ...

  9. 通过手写服务器的方式,立体学习Http

    前言 Http我们都已经耳熟能详了,而关于Http学习的文章网上有很多,各个知识点的讲解也可说是深入浅出.然而,学习过后,我们对Http还是一知半解.问题出在了哪? Http是一个客户机与服务器之间的 ...

  10. 复杂链表的复制(剑指offer-25)

    题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点.(注意,输出结果中请不要返回 ...