天天看点

期待成为程序媛的我今天要学习Python中的“函数”了!调用函数定义函数空函数函数的参数作用域附加知识

函数

  • 调用函数
  • 定义函数
  • 空函数
  • 函数的参数
    • 必选参数
    • 可选参数
  • 作用域
    • 全局变量
    • 局部变量
  • 附加知识

函数:可接受输入,执行指令并返回输出的复合语句。函数是可以被重复使用的。

调用函数

Python编程语言中自带了一个被称为内置函数的函数库,我们可以直接调用;调用一个函数的意思就是为函数提供执行指令并返回输出所需的输入。

当我们调用一个函数的时候要知道这个函数的名称、参数、参数的个数及参数的类型。 Python官网有函数库的总结。

例:

# len:返回对象的长度
a = len("python")
print(a)
# int:强制转换为整型
b = int("110")
c = int(110.2)
print(b, c)

>>>6
>>>110 110
           

定义函数

自己在Python中创建一个函数,需要给她取一个函数名,并定义其参数、行为和返回值。这里需要注意的是函数名不能使用大写字母且单词之间用下划线【_】分隔。定义函数的基本格式如下:

#函数geci里面是一句歌词,每次调用的时候都会输出“踮起脚尖,提起裙边”。
def geci():
    print("踮起脚尖,提起裙边")
geci()

>>踮起脚尖,提起裙边
           

注:def是定义函数的关键字,geci是函数名,print(“踮起脚尖,提起裙边”)是函数体。

当我们希望定义一个会返回结果的函数时,就会用到【return】,具体操作如下:

#计算一个数的相反数
def f(x):
    return -x
    
R = f(1)
print(R)

>>-1
           

(这里的参数x即为后面将要讲到的必选参数)

这时如果函数没有return时,就会返回None:

def f():
    r = -1

R = f()
print(R)

>>None
           

函数可以有零个、一个或多个参数,当有多个参数的时候要将圆括号中的参数用【,】隔开。

空函数

空函数就是什么都不做的函数,如下即可定义:

def nop():
     pass
           

空函数可以让没想好如何写的代码运行,不至于报错。

函数写出来了,那么当我们把每个函数都存为.py文件后(即为模块),就可以在任何程序中调用了,利用【import】关键字。当然也可以安装一个比较优秀的第三方模块(一些优秀的模块),在命令提示符通过【pip install xx】即可安装所需的模块。

函数的参数

必选参数

当调用函数是必须传入的参数极为必选参数。

可选参数

调用函数时只在需要时才会传入,并不是执行程序必须的参数即为可选参数,可选参数具有自身的默认值,例:

# 定义一个具有可选参数的求取相反数的函数
def f(x=1):
    return -x

# 调用函数,不输入参数
R = f()
print(R)

>>-1
# 调用函数,输入参数
R = f(-2)
print(R)

>>2
           

可见,当调用函数f()时,不传入参数,那么x就自动获值1,而当传入参数时就识别所传入的参数。当一个函数既包含必选参数又包含可选参数时,必选参数必须在可选参数之前。

其他参数介绍与具体的注意事项见链接: 参数介绍.

作用域

全局变量

指在函数或类之外定义的变量,在程序的任何位置都可对其进行读写。

局部变量

指在函数或类之内定义的变量,只在对应的函数或类中才可对其读写。

如果,在函数中希望修改全局变量,要使用【global】关键字加上希望修改的变量,这样是为了防止在函数中修改变量值不会改变变量本来的值。例:

x = 5
def f():
    global x
    x += 1
    print(x)
    
f()

>>6    
           

如果,在函数中希望修改非全局的上一层变量,要使用【nonlocal】关键字:

def f1():
    x = 5
    def f2():
        nonlocal x
        x += 1
        print(x)
    return f2()

f1()

>>6
           

附加知识

1.为避免出现错误时捕获异常并给出解决方法,需要使用【try】和【except】关键字。当需要输入两个数字,然后自动求取其相除的结果,可知除法的除数不可为0,我们即可利用这种方法来提示第二个数不可为0:

a = input("dividend:")
b = input("divisor:")
a = int(a)
b = int(b)
try:
    print(a/b)
except:
    print("除数不可为0")

>>dividend:6
>>divisor:3
>>2.0

>>dividend:6
>>divisor:0
>>除数不可为0
           

2.在整个需要输入参数的函数中,一般我们需要带上参数的类型来方便调用者使用:

def(x,y):
    """
    返回x+y的值
    :x:int.
    :y:int.
    :return:int,x和y的和
    """
    return x+y
           

函数这部分学的有点迷糊,,,,,,