07_python的函数

1.python的自定义函数

(1)python的函数定义

定义不含参数的python函数的基本语法:

def 函数名():

    函数中封装的代码
    ……

注意:

  • 函数名称应该见名知意。
  • 函数名称的命名应该符合标识符命名规则。
  • 函数的定义缩进非常严格。

(2)python的函数参数及返回值

python中的形参和实参与其他高级语言类似。但是其函数没有类型,如果函数有返回值,直接使用return 语句返回即可。return后面的语句不会再执行了。

(3)python的函数调用

可以通过函数名调用,函数名(参数列表),与其他高级语言类似。没有参数的函数,直接缺省即可。

(4)python的函数文档注释

  • 在开发中,如果希望给函数添加注释,应该在定义函数的下方,使用连续的三对引号,对定义的函数进行说明。
  • 函数调用位置,使用快捷键CTRL + Q可以查看函数的说明信息。
  • 建议在定义一个函数时,与其他代码使用两个空行隔开。因为函数是一个功能模块。

(5)python的函数嵌套使用

与其他高级语言类似。

2.python的模块中的函数

(1)python的模块概述

模块是 Python 程序架构的一个核心概念

  • 模块 类似于java中的 ,要想使用这个包中的工具,就需要import(导入) 这个模块
  • 每一个以扩展名 py 结尾的 Python 源代码文件都是一个模块
  • 在模块中定义的全局变量函数都是模块能够提供给外界直接使用的工具。

(2)使用python模块中的函数

  • 导入模块
  • 使用 模块名.变量或者模块名.函数 的方式,使用这个模块中定义的变量或者函数。

(3)自定义模块的定义和使用

  • 自己写的.py文件就是一个模块。
  • 使用自定义的模块只要import该模块即可。
  • 模块(源文件)的命名应该符合标识符规则。
  • 如果模块命名没有符合标识符规则,则会导入失败。

(4)使用python模块的好处

  • 方便代码复用。(类似于java中的包。)

3.python中的函数参数与返回值

(1)python中函数参数与返回类型组合

  • 无参数,无返回值
  • 无参数,有返回值
  • 有参数,无返回值
  • 有参数,有返回值

(2)python函数内部修改全局变量

  • 如果全局变量是一个可变类型(引用可变),可以通过全局变量自身的方法修改全局变量的内容(外部的变量发生了改变。),此时全局变量的引用(存储地址)没有发生变化。

  • 如果全局变量是一个不可变类型(引用不可变),可以通过全局变量自身的方法修改全局变量的内容,此时创建了一个新的全局变量(引用)。

  • 无论实参是可变类型还是不可变类型,只要是赋值语句,python默认修改的只是局部变量,不会影响外部变量(全局变量)。

全局变量可以在函数中被修改(使用赋值语句),前提是需要对该变量作global声明。假如这个全局变量是不可变类型的变量,那么相当于重新创建了一个全局变量替代了之前的全局变量。如果全局变量是可变数据类型,相当于更改了全局变量的引用(指向的内存的位置)。

4.函数参数缺省

(1)函数参数缺省概述

定义函数时,可以给某个参数指定一个默认值,具有默认值的参数就叫做缺省参数。调用函数时,如果没有传入缺省参数,则在函数内部使用定义函数时指定的参数默认值

(2)函数参数缺省示例

str_list.sort()             # 列表的升序排列省略了reverse=False				
str_list.sort(reverse=True) # 列表的降序排列,升序比降序常用,故升序参数缺省

(3)函数参数缺省注意事项

  • 必须保证带有默认值的缺省参数在参数列表末尾
  • 调用函数时,如果有多个缺省参数,需要指定参数名,这样解释器才能够知道参数的对应关系!

5.多值参数

有时可能需要一个函数能够处理的参数个数是不确定的,这个时候,就可以使用多值参数

  • python 中有两种多值参数:

    • 参数名前增加 一个 * 可以接收 元组
    • 参数名前增加 两个 * 可以接收 字典
  • 一般在给多值参数命名时,习惯使用以下两个名字

    • *args —— 存放元组参数,前面有一个 *
    • **kwargs —— 存放字典参数,前面有两个 *
  • 其中argsarguments 的缩写,有变量的含义,kwkeyword 的缩写,kwargs 可以记忆键值对参数

6.元组和字典的拆包

  • 在调用带有多值参数的函数时,如果希望:
    • 将一个元组变量,直接传递给 args
    • 将一个字典变量,直接传递给 kwargs
  • 就可以使用拆包,简化参数的传递,拆包 的方式是:
    • 元组变量前,增加一个 *
    • 字典变量前,增加两个 *

7.python中解释源程序的步骤

(1)python中解释程序的步骤

  • 编译源代码,生成字节码文件。
  • 对字节码文件进行处理,生成机器码文件,供cpu执行。

(2)生成的字节码文件的位置及名称

python生成的字节码文件在自动生成的__pycache__目录下。其名称为:文件名.cpython-35.pyc

  • .cpython-35 代表解释器的版本号。
  • .pyc代表编译后的字节码文件,ccompile的缩写。
  • 如果程序曾经运行过,并且没有进行修改,那么再次运行该程序时python解释器会直接加载原来生成的.pyc文件。
  • 如果程序进行了修改,那么python解释器会先再次生成新的.pyc文件,然后加载该文件。
posted @ 2019-09-22 19:05  江南又一春  阅读(237)  评论(0编辑  收藏  举报