函数

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知识:static属性、普通属性、static代码块、普通代码块、构造函数

    本文中结论仅经本机测试,不保证在别的环境下成立.如果有什么不成立的地方务必告诉我_(:_」∠)_ java的内存是动态分配的,其机制和c/c++相当不一样……emmm在此不表. static: ·st ...

  2. windows下编译基于nginx插件的rtmp流媒体服务nginx-rtmp

    1 概述 rtmp流媒体服务器,开源方案有多种,包括srs,red5,crtmpserver,fms,nginx插件等.本文描述了基于nginx插件的方式来实现rtmp流媒体服务器nginx-rtmp ...

  3. 二、docker学习笔记——安装redis

    前提:打开powershell(管理员) 1.官网路径 按照官网的做了,但外网无法链接,只好换个做法. 2.docker pull redis 这下载的最新版redis 3.在docker上挂载文件夹 ...

  4. 【Leetcode】【Medium】Validate Binary Search Tree

    Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...

  5. 【Leetcode】【Medium】Path Sum II

    Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given su ...

  6. June 30th 2017 Week 26th Friday

    Love me little and love me long. 不求情意浓,但愿情意久. Some people say beautiful young people are the creatur ...

  7. Oracle表空间和用户常用语句

    --删除空的表空间,但是不包含物理文件drop tablespace tablespace_name;--删除非空表空间,但是不包含物理文件drop tablespace tablespace_nam ...

  8. 应用服务&领域服务

    应用服务&领域服务 DDD理论学习系列——案例及目录 1. 引言 单从字面理解,不管是领域服务还是应用服务,都是服务.而什么是服务?从SOA到微服务,它们所描述的服务都是一个宽泛的概念,我们可 ...

  9. WAS上配置数据源连接失败

    问题描述: 在节点 cnshh171Node01 上的服务器 server1 上, 对数据源 testj2cbug 执行的测试连接操作 由于以下异常 java.sql.SQLException: 调用 ...

  10. 设置 jsp 表格相邻两行的颜色不一样

    转载网址:https://zhidao.baidu.com/question/134905332.html?fr=iks&word=for+%28var+i%3D0%3Bi%3CTable.r ...