跳至主要內容

函数

刘春龙原创...大约 4 分钟Python教程文档

函数是可重用的程序代码块。

函数的作用,不仅可以实现代码的复用,更能实现代码的一致性。一致性指的是,只要修改函数的代码,则所有调用该函数的地方都能得到体现

Python 函数的分类

  • 内置函数

    我们前面使用的 str()、list()、len()等这些都是内置函数,我们可以拿来直接使用。

  • 标准库函数

    我们可以通过 import 语句导入库,然后使用其中定义的函数

  • 第三方库函数

    Python 社区也提供了很多高质量的库。下载安装这些库后,也是通过 import 语句导入,然后可以使用这些第三方库的函数

  • 用户自定义函数

    用户自己定义的函数,显然也是开发中适应用户自身需求定义的函数。今天我

函数的使用

Python 中,定义函数的语法如下:

def 函数名 ([参数列表]) :
    '''文档字符串'''
    函数体/若干语句

简单定义一个函数

def add(a,b,c):
  '''完成三个数的加法,并返回他们的和'''
  sum = a+b+c
  print("{0}、{1}、{2}三个数的和是:{3}".format(a,b,c,sum))
  return sum
​
add(10,20,30) # 10、20、30三个数的和是:60
add(30,40,50) # 30、40、50三个数的和是:120

参数说明及注释

形参和实参

def printMax(a, b):
    """实现两个数的比较,并返回较大的值"""
    if a > b:
        print(a, "较大值")
        return a
    else:
        print(b, "较大值")
        return b


printMax(10, 20)
printMax(30, 5)

上面的 printMax 函数中,在定义时写的printMax(a,b)a和b称为“形式参数”,简称“形参”。也就是说,形式参数是在定义函数时使用的。 形式参数的命名要符合“标识符”命名规则。

在调用函数时,传递的参数称为“实际参数”,简称“实参”。上面代码中,printMax(10,20)10和20就是实际参数。

文档字符串(函数的注释)

程序的可读性最重要,一般建议在函数体开始的部分附上函数定义说明,这就是“文档字符串”,也有人成为“函数的注释”。我们通过三个单引号或者三个双引号来实现,中间可以加入多行文字进行说明。

def print_star(n):
    """
    根据传入的n,打印多个星号
    :param n: 传入的数字
    :return:  n个星号拼接的字符串
    """
    s = "*" * n
    print(s)
    return s


help(print_star)
print(print_star.__doc__)

我们调用 help(函数名) 可打印输出函数的文档字符串,我们也可以通过函数名.doc直接获取到函数的文档字符串,自己进行打印。

返回值详解

如果函数体中包含 return 语句,则结束函数执行并返回值

如果函数体中不包含 return 语句,则返回 None 值

要返回多个值,使用列表、元组、字典、集合将多个值“存起来”即可

定义一个打印 n 个星号的无返回值的函数
def print_star(n):
  print("*"*n)

print_star(5) # *****
定义一个返回两个数平均值的函数
def my_avg(a,b):
  return (a+b)/2
​
#如下是函数的调用
c = my_avg(20,30)
print(c) # 25
返回一个列表
def printShape(n):
  s1 = "#"*n
  s2 = "$"*n
  return [s1,s2]


s = printShape(5)
print(s)  # ['#####', '$$$$$']

变量的作用域

变量起作用的范围称为变量的作用域,不同作用域内同名变量之间互不影响。变量分为:全局变量、局部变量。

全局变量:
  • 在函数和类定义之外声明的变量。作用域为定义的模块,从定义位置开始直到模块结束。
  • 全局变量降低了函数的通用性和可读性。应尽量避免全局变量的使用。
  • 要在函数内改变全局变量的值,使用 global 声明一下
局部变量:
  • 在函数体中(包含形式参数)声明的变量。
  • 局部变量的引用比全局变量快,优先考虑使用
  • 如果局部变量和全局变量同名,则在函数内隐藏全局变量,只使用同名的局部变量
a = 100  # 全局变量

def f1():
    global a  # 如果要在函数内改变全局变量的值,增加global关键字声明
    print(a)  # 打印全局变量a的值
    a = 300

f1()  ## 100
f1()  # 300
print(a) #300
a=100
def f1():
  a = 3   #同名的局部变量
  print(a)

f1()  # 3
print(a)  #a仍然是100,没有变化

提示

局部变量的查询和访问速度比全局变量快,优先考虑使用,尤其是在循环的时候。

上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7