一、函数
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参数的介绍的更多相关文章

  1. Python 基于python操纵zookeeper介绍

    基于python操纵zookeeper介绍 by:授客  QQ:1033553122 测试环境 Win7 64位 Python 3.3.4 kazoo-2.6.1-py2.py3-none-any.w ...

  2. python名称空间介绍

    python名称空间介绍 名称空间 python 中名称空间分三种: 内置名称空间 全局名称空间 局部名称空间 内置名称空间: 原码里面的一些函数都是存在这个内存空间中,任何模块均可访问它,它存放着内 ...

  3. python内置模块collections介绍

    目录 python内置模块collections介绍 1.namedtuple 2.deque 3.defaultdict 4.OrderedDict 5.ChainMap 6.Counter 7.小 ...

  4. (转)python之函数介绍及使用

    为什么要用函数? 1.减少代码量 2.保持一致性 3.易维护 一.函数的定义和使用 ? 1 2 3 4 5 6 def test(参数):              ...     函数体     . ...

  5. Python字节码介绍

    了解 Python 字节码是什么,Python 如何使用它来执行你的代码,以及知道它是如何帮到你的.如果你曾经编写过 Python,或者只是使用过 Python,你或许经常会看到 Python 源代码 ...

  6. python 参数类型理解

    简介 大家都知道,在java中,函数或者方法的参数在调用时必须对其进行传参操作,也就是所谓的必选参数,也可以称为位置参数,除此之外,python还拥有其他语言不具有的一些参数类型,以下将进行一一介绍. ...

  7. python strip()函数 介绍

    python strip()函数 介绍,需要的朋友可以参考一下   函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm)        删除s字符串中开头.结尾处,位于 rm删除 ...

  8. JQuery中的AJAX参数详细介绍

    Jquery中AJAX参数详细介绍 参数名 类型 描述 url String    (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") 请求方 ...

  9. MySQL参数log_bin_trust_function_creators介绍

    MySQL的有个参数log_bin_trust_function_creators,官方文档对这个参数的介绍.解释如下所示: log_bin_trust_function_creators Comma ...

随机推荐

  1. Github之利用SSH完成Git与GitHu 的绑定

    第 1 步:生成 SSH key 在 Git Bash 中输入ssh命令,查看本机是否安装 SSH: 输入ssh-keygen -t rsa命令,表示我们指定 RSA 算法生成密钥,然后敲三次回车键, ...

  2. 2018-2-13-win10-uwp-参考

    title author date CreateTime categories win10 uwp 参考 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23 ...

  3. CtfStudying之SSH私钥泄露

    8/23/19 SSH私钥泄露 对于只是给定一个对应ip地址的靶场机器,我们需要对其进行扫描,探测其开放服务.我原来理解的渗透就是找到目标的漏洞,然后利用这些(这种)漏洞,最后拿到机器的最高权限:其实 ...

  4. MySQL 简介

    MySQL 简介 点击查看MySQL官方网站 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,后来被Sun公司收购,Sun公司后来又被Oracle公司收购,目前属于Oracle旗 ...

  5. python基础--匿名函数

    def calc(x): return x+1 a=calc(10) print(calc) print(lambda x:x+1)#lambda函数的内存地址,利用函数名可以作为值传递给变量 b=l ...

  6. cd 切换目录

    1. 功能说明 cd是“change directory”中每个氮气的首字母缩写功能是重当前工作目录切换到指定的工作目录:cd是内建命令. 2. 语法格式 cd  [option]  [dir] cd ...

  7. alert(1) to win 3

    function escape(s) { s = JSON.stringify(s); return '<script>console.log(' + s + ');</script ...

  8. bzoj4128 Matrix 矩阵 BSGS

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4128 题解 想了十分钟没有任何思路. 然后一眼瞥见一句话"数据保证在 \(p\) 内 ...

  9. JS基础入门篇(七)—运算符

    1.算术运算符 1.算术运算符 算术运算符:+ ,- ,* ,/ ,%(取余) ,++ ,-- . 重点:++和--前置和后置的区别. 1.1 前置 ++ 和 后置 ++ 前置++:先自增值,再使用值 ...

  10. springboot 整合Druid

    Druid连接池监控配置 1) 引入依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <depende ...