Python函数

前言:本章代码不具备可执行性,仅用作辅助概念解释

 

1.函数:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段

def 函数(形参):    #形参:保存在形参中的值,在函数返回后就丢失    
    函数体
函数(实参)    #实参:调用函数时传递给函数的信息

2.返回值:函数返回的值(函数调用求值的结果)

  2.1用def语句创建函数时,可以用return语句指定应该返回什么值。如果在return语句中使用了表达式,返回值就是该表达式的结果。

  2.2可返回任何类型的值,包括列表,字典等数据结构

def 函数(形参):
    变量 = 函数体
    return 变量
print(函数(实参))

3.传递实参:位置实参;关键字实参

  3.1位置实参:基于实参的顺序,python将每个实参关联到每个形参(可调用函数多次;顺序不可反)

  3.2关键字实参:基于实参的形参名,传递给函数的名称-值对

  3.3默认值:可将每个形参指定默认值(可为空字符串)。当给形参提供了实参时,使用指定实参值,否则使用默认值

def 函数(形参1,形参2,形参3=默认值):    #带有默认值的形参放在最后面;等号两边不要有空格
    函数体
函数(形参2=实参2,实参1)
函数(形参2=实参2,形参3=实参3,实参1)    # =两边不要有空格

4.传递列表

def 函数(形参1,形参2):
    函数体
实参1 = 列表1
实参2 = 列表2
函数(实参1)
函数(实参2[:])    #切片表示法:创建列表2副本,向函数传递副本而不是原件

5.传递任意数量的实参

def 函数(*形参):    # *让python创建一个名为形参的空元组,并将所有实参装到这个元组中;*形参必须放在所有形参最后
    函数体    
函数(实参1,实参2,.......)

  5.1使用任意数量的关键字实参:将函数编写成能接受任意数量的键-值对

def 函数(形参1,形参2,**形参3):    #形参3让python创建一个名为形参3的字典
    函数体
函数(实参1,实参2,a='b',c='d',e='f',......)

6.将函数存储在模块中

  6.1模块:扩展名为.py的文件,包含要导入到程序中的代码(模块和程序必须在同一个程序中)

  6.2导入整个模块

import 模块名
模块名.函数(实参)

  6.3导入特定的函数

from 模块名 import 函数1,函数2,函数3,......
函数1(实参)
函数2(实参)
函数3(实参)
......

  6.4使用as给函数,模块指定别名

from 模块名 import 函数1 as 函数1别名
模块名别名.函数(实参)
import 模块名 as 模块名别名
模块名别名.函数(实参)

  6.5导入模块中所有函数(若模块中函数名称与自己项目中名称相同,会覆盖函数,而不是导入所有函数)

from 模块名 import *

7.局部作用域和全局作用域

  7.1定义

1.局部作用域:在被调用函数内赋值的变元和变量,处于该函数的局部作用域
2.全局作用域:在所有函数之外的变量,属于全局作用域
3.局部变量:处于局部作用域的变量
4.全局变量:处于全局作用域的变量

  7.2规则

1.全局作用域中的代码不能使用任何局部变量
2.局部作用域可以访问全局变量
3.局部作用域不可以使用其他局部作用域的变量
4.在不同的作用域中,可以使用相同名字命名的不同变量

  7.3 global语句:在一个函数内将指定变量修改为全局变量

    global 变量

  7.4区分变量

1.变量在全局作用域中使用,它总是为全局变量
2.有针对变量的global语句,它为全局变量
3.变量用于函数中的赋值语句,为局部变量
4.变量没有在赋值语句中,为全局变量

def spam():
    print(变量1)    #变量1为全局变量 

 

8.异常处理

try:
    normal execution block    #有可能出错的程序,出错时转到except子句中执行
except A:
    Exception A handle    #一旦执行跳到except语句,就不会回到try语句
except B:
    Exception B handle
except:
    Other exception handle
else:
    If no exception,get here    #try子句执行无异常时,执行else子句;else语句必须与except语句搭配才可以使用
finally:
    print('finally')    #无论是否发生异常,皆执行

#else,finally语句是可选的,不是必须存在的
#execute v.执行
block n.块;v.阻止

 

posted on 2018-12-11 16:07  Superwanderer  阅读(79)  评论(0)    收藏  举报

导航