函数

1.函数结构
   def 是函数的定义关键字,my_len是函数名。()传参用,冒号下面都是函数体。
   执行函数方法:函数名加括号来执行函数。My_len()

    举例:
    # s = 'lkfjsjulkjdgjdsf'
    # def my_len():
    # count = 0
    # for i in s:
    # count += 1
    #
    # print(my_len())

2.函数的封装
  

  一个函数就是为了实现一个功能

3.Return 在函数中的作用,是给函数的执行者返回值

  return作用:

    1.终止函数
    2.给函数的执行者返回值

  retun后接值说明:

    Return后面不加任何东西,反悔结果是none
    Return,对于单个值来说,后面加什么反回的就是什么,是字符串就反回字符串,是数字就反回数字。
    Return 对于多个反回值时,会将多个值放到一个元组中,反回给函数的执行者。

      举例:
        #def func1():
        # print(111)
        # print(222)
        # return
        # print(333)
        # print(func1()) ###终止函数反回默认值none
      结果:
        111
        222
        None

      举例:
        #def func1():
        # print(111)
        # print(222)
        # return 666 ####反回666
        # return 'alex' ####反回'alex'
        # return 'alex', 666, [1, 2, 3] ###反回一个元组('alex', 666, [1, 2, 3])

4.函数的传参
  函数传参分为两个方向:
    1. 实参角度
      ——实参就是在执行函数过程中向函数内传入的参数。(函数执行里面放的参数)
    2. 行参角度
      ——行参就是准备被赋值的名字,即在运行函数时准备接收行参的字符。(在函数定义的时里面放的参数)

  注意:行参是不可以被改变得,而实参是可以改变的。

    举例:
      # def my_len(argv): # argv是形式参数 ,形参
      #
      # count = 0
      # for i in argv:
      # count += 1
      # return count
      # s = 'lkfjsjulkjdgjdsf'
      # l1 = [1, 2, 3, 4, 5]
      # print(my_len(l1)) #l1是实际参数, 实参
    结果:
      5

  实参的类型:
    1.位置参数
    2.关键字参数
    3.混合参数

    (1)位置参数
        行参的参数要与实参位置按顺序一一对应,也就是说在改行参传参数的值,要与预先定义的行参位置一一对应,行参会第一个字符会对应接收实参的第一个字符,                              依次类推。

    (2)关键词参数
        关键字参数不关心传入参数放的顺序位置,传入参数要与行参关键字一致即可。

    (3)混合参数
        位置参数和关键字参数同时存在
        注:关键字参数,必须要在位置参数的后面

          举例:
            # 位置参数 按照顺序一一对应
            # def func1(a, b, c):
            # print(a, b, c)
            # func1(1, 2, 'alex') ###1,2,'alex'分别对应a,b,c

            # def max(a, b): return a if a > b else b
            # ret = 1 if 2 > 1 else 6
            # print(ret)
            # print(max(10, 2)) ###10,2,分别对应a,b

            # 关键字传参 一一对应。
            # def func2(a, b):
            # print(a, b)
            # func2(b=2, a=3) ###关键字a=3 对应行参里面的a,b=2对应行参里面的b

            混合参数。(位置参数,关键字参数) 关键字参数必须在位置参数后面。
            # def func3(a, b, c, d):
            # print(a, b, c, d)
            # func3(1,2,d=3,c=5) ###关键字必须在位置参数后
    行参的类型:
      1.位置参数
      2.默认参数
      3.动态参数 (*args 、 **kwargs )

      (1)位置参数
          位置参数就是保证要与实参的位置参数保持一致

      (2)默认参数
          默认参数用的比较多,默认就是在不传入参数的时候使用的参数即为默认参数,即在实参不输入参数时,程序运行会使用预先定义好的默认参数,但手动输入                                      后悔替换默认参数输入。
          注意,默认参数要在位置参数的后面添加

      (3)动态参数(万能参数)
          对参数的个数不固定的时候使用动态参数(万能参数),即在执行函数时,实参传入多少参数接收多少参数。

          (*args 、 **kwargs )动态参数有两种:
          动态参数分为两种(万能参数)
            *args 接收所有的位置参数,所有的位置参数都放在一个元祖中。
            **kwargs 接收所有关键字参数,所有接收到的关键字都放在一个字典中。

              举例:

                #默认参数:
                # def login(name,sex='男'): ###默认参数要在位置参数后面
                # # with open('register', encoding='utf-8', mode='a') as f1:
                # # f1.write('{},{}\n'.format(name,sex))
                # #
                # #
                # # while True:
                # # name = input('请输入姓名:').strip()
                # # if '1' in name:
                # # login(name)
                # # else:
                # # sex = input('请输入性别:').strip()
                # # login(name,sex)

                #万能参数:
                # def func3(*args, **kwargs): #函数的定义的时候 * 代表聚合。
                # print(args)
                # print(kwargs)
                # # func3(1, 2, 3, 'alex', c=6, name='wusir', age='21') ###结果:(1, 2, 3, 'alex') {'c': 6, 'name': 'wusir', 'age': '21'}

    形参的排列顺序:
      位置参数--> *args-->默认参数-->**kwargs

        举例:
          # def func5(a,b,*args,sex='男',**kwargs):
          # print(a,b,)
          # print(args)
          # print(sex)
          # print(kwargs)

5.函数中星号的定义:
  (1)在函数定义的时候,*代表聚合
  (2)函数的执行时候,*代表打散 注意:字典打散时用**两个星号

    举例:
      # def func3(*args, **kwargs): #函数的定义的时候 * 代表聚合。
      # print(args)
      # print(kwargs)
      # func3(*[1, 2, 3],*(22, 33)) #函数的执行的时候 * 代表打散。 ###结果:(1, 2, 3, 22, 33) {}
      # func3(**{'name':"alex"},**{'age':23}) #函数的执行的时候 * 代表打散。 ###结果:() {'name': 'alex', 'age': 23}
      # func3(1, 2, 3, 22, 33) #函数的执行的时候 * 代表打散。 ###结果:(1, 2, 3, 22, 33) {}

6.函数的嵌套:(记住两个关键点)
  代码顺序执行,当见到函数名加括号,就是执行函数。
  函数在没有执行完是不会执行下面的内容的。

  注:
  执行一个函数就会开辟一个临时空间进行存储,即每个函数都会单独开辟一个临时空间使用存放函数体内容。

    举例:
      # def func1():
      # print(666)
      #
      # def func2():
      # func1()
      # print(333)
      #
      # def func3():
      # func2()
      # print(222)
      # print(111)
      # func3()
      # print(555)

      # def func1():
      # name = 'susi'
      # print(name)
      # def func2():
      # name1 = 'git'
      # print(333)
      # print(444)
      # func2()
      # func1()

python函数基本介绍的更多相关文章

  1. python 函数参数介绍

    python 函数参数介绍 python 使用过程总,总会遇到 *args,**kw形式的参数,总是一头雾水,而且网上介绍的或是叫法不一,为此专门深入实践进而了解了函数参数的使用 具体请看代码 #-* ...

  2. python 函数基础介绍

    函数是对程序逻辑进行结构化或过程化的一种编程方法.能将整块代码巧妙地隔离成易于管理的小块,把重复代码放在函数中而不是进行大量的拷贝. 一.函数创建 def 函数创建格式如下: def function ...

  3. python——函数

    python--函数 1.介绍: 在过去的十年间,大家广为熟知的编程方法无非两种:面向对象和面向过程,其实,无论哪种,都是一种编程的规范或者是如何编程的方法论.而如今,一种更为古老的编程方式:函数式编 ...

  4. python内置函数详细介绍

    知识内容: 1.python内置函数简介 2.python内置函数详细介绍 一.python内置函数简介 python中有很多内置函数,实现了一些基本功能,内置函数的官方介绍文档:    https: ...

  5. Python入门之函数的介绍/定义/定义类型/函数调用/Return

    本篇目录: 一. 函数的介绍 二. 函数的定义 三. 定义函数的三种类型 四. 函数调用的阶段 五. Return返回值 ======================================= ...

  6. python 函数“四剑客”的使用和介绍

    python函数四剑客:lambda.map.filter和reduce. 一.lambda(匿名函数) 1. 学习lambda要注意一下几点: lambda语句被用来创建新的函数对象,并且在运行的时 ...

  7. Python函数作用域的查找顺序

    函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...

  8. Python函数参数默认值的陷阱和原理深究"

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...

  9. Day03 - Python 函数

    1. 函数简介 函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print():也可以自己创建函数,这 ...

随机推荐

  1. Java 之变量和常量(2)

    Java中的关键字: Java 语言中有一些具有特殊用途的词被称为关键字.关键字对 Java 的编译器有着特殊的意义,在程序中应用时一定要慎重哦!! Java 中常用关键字: 问:这么多,记不住啊.. ...

  2. 05_zookeeper的ACL

    [ACL概述] ACL:access control Lists,权限控制. * 针对节点可以设置相关的读写等权限,目的是为了保障数据安全性. * 权限permissions可以指定不同的权限范围以及 ...

  3. Page Cache的落地问题

    除非特别说明,否则本文提到的写操作都是 buffer write/write back. 起因 前几天讨论到一个问题:Linux 下文件 close成功,会不会触发 “刷盘”? 其实这个问题根本不用讨 ...

  4. canvas.addEventListener()

    对 canvas 元素的事件监听用addEventListener()实现, 但是有一点缺陷是:canvas 不支持键盘事件,为了解决这个问题,可以采用以下两种方案: 方案一: key event - ...

  5. Hadoop HA集群的搭建

    HA 集群搭建的难度主要在于配置文件的编写, 心细,心细,心细! ha模式下,secondary namenode节点不存在... 集群部署节点角色的规划(7节点)------------------ ...

  6. mongodb 3.4复制集配置

    1:启动三个实例 /bin/mongod --config /home/mongodb/db27017/mongodb27017.conf /bin/mongod --config /home/mon ...

  7. 规约模式的ef拼接

    public class LamadaExtention<Dto> where Dto : new() { private List<Expression> m_lstExpr ...

  8. swift的动态库

    共享可执行文件 iOS 有沙箱机制,不能跨App间共享共态库,但Apple开放了App Extension,可以在App和Extension间共间动态库(这也许是Apple开放动态链接库的唯一原因了) ...

  9. 十.mysqld_multi stop无效问题

    今天在尝试运行mysqld_report stop的时候,发现无法停止mysql,日志中的错误如下 Stopping MySQL servers mysqladmin: [Warning] Using ...

  10. 关于接口返回BOM头处理的问题

    今天用RestClient框架做接口请求.结果请求回来的json转模型失败.提示JSON格式不正确.到BeJson网站验证一下,发现果然不对. 后来得知是由于json信息带着bom头导致的,这个该死的 ...