给普通人的Python——第五章(下)

5.4 函数的深入学习

之前我们已经调用过很多次函数了,大家对函数是既熟悉又陌生,我想很多朋友对函数都有一种朦朦胧胧的感觉,现在是时候单独谈一谈函数了,我相信大家学完这一章,肯定会有一种豁然开朗的感觉,加油吧!

完整的函数是由函数名、参数列表以及函数体组成,在函数中,4个空格缩进表示该语句属于函数体,如果函数有返回值,那么就需要在函数中使用return关键字返回结果。这其中,函数的参数和返回值并不是必须的。

例:

def hello():
    print("hello,world!")

hello()

传参并返回

# 定义add函数,有两个参数x、y
def add(x,y):
    #返回x与y的和
    return x + y

result = add(2,4)
print(result)

给参数默认值

定义函数时,可以为参数预先设置一个默认值,当函数被调用时,可以不需向括号中传入参数,函数体中则会使用这个默认的值,如果调用时传入参数,函数体中就会使用这个传入的值

# 参数默认值为2
def sub(x = 2):
    return x + 2

# 向sub函数中传入参数3
print(sub(3))

# 不向sub函数传参
print(sub())

5.4.1 函数的传参方式

除了按照函数参数定义的顺序,一一对应的传入参数,Python还有另一种传参方式,按照参数名传参。

# 声明一个求三个数和的函数
def sub(x,y,z):
   return x + y + z


# 按顺序传参
result = sub(4,7,11)
print(result)

# 按参数名传参
result = sub(z=11,y=7,x=4)
print(result)

# 混合方式传参
result = sub(4,z=11,y=7)
print(result)

混合方式传参特别需要注意一点,按顺序的传参必须放在按参数名传参之前,如上例,4位于z=11,y=7之前,而不能写成sub(z=11,y=7,4),否则会造成混乱,程序会报错

5.4.2 变量的作用域

所谓作用域,就是起作用的范围。在不同的作用域内,变量是可以同名的。在Python中,作用域分为三个,全局作用域局部作用域内置作用域

全局作用域是指整个脚本文件内的范围中可用;局部作用域指某个函数范围内可用,超出这个函数的范围无效了。内置作用域是Python预先定义的,暂不讨论。

此外,全局变量不一定只能在函数的外部定义,函数内部也可以定义一个全局变量,定义之后,整个脚本文件内都可访问。在函数内定义全局变量,需要使用关键字global声明,特别要注意的一点,在函数内定义全局变量,必须先运行此函数之后,该全局变量才会生成,脚本文件的其他地方才能访问和使用。

5.5 用模块封装函数

Python中的模块实际上是指包含函数或者是一些类的源码文件。模块的一个好处是可重用。将代码写到模块中保存起来,我们可以下次继续使用,与此同时,我们还能将模块发给其他人使用。

简单讲,一个.py格式的文件就是一个模块。

5.5.1 自定义模块

  1. 创建模块
    新建一个Python脚本。即新建一个.py的文件,如下,我这里命名my_module.py

  2. 编写代码
    在模块中编写如下代码

    def show():
    	print("我是my_module中的show函数")
    
    def sayHello(name):
    	print("hello,",name)
    
  3. 引入模块
    在同一个文件夹下新建一个调用模块,即用来运行的模块,命名为run.py

    # 引入my_module模块,注意,引入时只写模块名,不带.py后缀
    import my_module
    
    # 通过模块名调用模块中的一个函数
    my_module.show()
    my_module.sayHello("Bob")
    

如上,这是一个完整的过程,演示了如何编写并使用模块。有了模块之后,我们所有的代码就不必要都写在同一个文件中,可以分多个脚本文件。这样的好处是显而易见的,一方面我们将编写好的函数封装到模块中,供其他人使用,另一方面我们也更容易梳理清晰逻辑,当代码成千上万行之后,不同的脚本对应不同的功能,有相关问题,只需要去对应的脚本中检查。

其实在生活中,这种模块化的思维也很常见,比如电脑的硬盘坏了,我们只需要买一个新的硬盘,然后把旧硬盘拔了,插上新的即可。硬盘与电脑主板之间只有一个插头连接,而不是一堆导线焊接,普通人就可以更换。我们的模块化编程也是一样的,如果某个模块有问题,我们可以去单独修改该模块,或者写一个新的模块,然后把旧模块去除,将新模块导入。

最后需要注意一点,Python已为我们提供了很多内置的模块,例如math、random等等,这些内置模块,我们直接import就能使用,Python已经为我们放好了地方,而我们自己的模块如果没有放对地方,import就会报错,因为Python并不知道我们自己写的模块放哪里了,他找不到。所以,在使用自己所编写的模块时,要注意把被调用的模块和用来调用的模块放在同一个文件夹。

请关注公众号:编程之路从0到1

关注公众号即可获取网盘资源!
配合本教程,还有视频讲解哦,不容错过
在这里插入图片描述

血色v残阳 CSDN认证博客专家 编程达人 Flutter 课程讲师
掌握C、Java、Python、Go、Dart语言等多种编程语言,擅长GUI开发,曾从事Android原生开发,Flutter跨平台开发等等工作
微信公众号:
“编程之路从0到1”
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页