涵盖函数的定义(使用 def 关键字)、参数传递(位置参数、默认参数、可变参数等)、返回值的使用,以及函数的作用域。
这个文档字符串(在函数内部,用三引号括起来的部分)可以帮助我们和其他使用这个函数的人更好地理解函数是做什么的,有什么参数,返回什么值。
参数传递
位置参数:
当我们调用函数的时候,要给它传递参数。位置参数就是按照参数定义的顺序来传递值。就像我们之前定义的add_numbers函数,我们这样调用它:
这里3会被传递给a,5会被传递给b,然后函数计算3 + 5 = 8,并把结果存储在result变量里,最后打印出来。
默认参数:
有时候,我们希望函数的某个参数有一个默认值,这样在调用函数的时候,如果我们不指定这个参数的值,函数就会使用默认值。比如:
在第一个print(greet(“Alice”))中,我们只传递了一个参数"Alice",因为greeting参数有默认值"Hello",所以函数会使用这个默认值,结果就是"Hello, Alice"。在第二个print(greet(“Bob”, “Hi”))中,我们指定了greeting的值为"Hi",那么函数就会使用我们指定的值,结果是"Hi, Bob"。
可变参数(*args 和kwargs):
args:
想象一下,我们要写一个函数来计算任意多个数的和,这时候就可以用args。比如:
在这个sum_numbers函数里,*args就像是一个魔法口袋,它可以接收任意多个位置参数,并把它们都放在一个元组里。在这个例子中,1、2、3被放进了args这个元组里,然后我们用sum函数计算它们的和。
kwargs:
如果我们要接收任意多个带有名字的参数(关键字参数),就可以用kwargs。比如:
这里kwargs会把我们传递的关键字参数收集到一个字典里。在这个例子中,name="Alice"和age=25会被收集到kwargs字典里,然后我们通过循环遍历字典,把每个键值对都打印出来。
返回值
函数执行完后,可以给我们返回一个结果,这就是返回值。我们用return语句来指定返回值。比如:
在这个no_return_function函数里,它只是打印了一句话,没有return语句,所以当我们调用这个函数并把结果存储在result变量里时,result的值就是None。
函数的作用域
局部变量:
在函数内部定义的变量只能在这个函数内部使用,这种变量叫做局部变量。比如:
如果我们在函数外面尝试访问x,就会出错,如下代码会报错:
在local_variable_example函数里,x是局部变量,它只在这个函数内部有意义。当函数执行完后,x就不存在了。
全局变量:
在函数外面定义的变量叫做全局变量,在函数内部可以访问全局变量。但是,如果我们要在函数内部修改全局变量的值,就需要使用global关键字。比如:
如果要修改全局变量:
在access_global_variable函数里,我们可以直接访问全局变量global_variable并打印它的值。在modify_global_variable函数里,因为我们要修改global_variable的值,所以先用global关键字声明这个变量是全局变量,然后再给它赋新的值。
介绍如何创建和使用模块(将相关的函数、类等组织到一个.py 文件中),以及如何将多个模块组织成包(使用目录结构和__init__.py 文件),同时学习如何导入和使用第三方模块。
模块的创建和使用
模块的概念:
模块就是一个包含 Python 代码的文件。比如说,我们创建一个名为math_operations.py的文件,这个文件就是一个模块。在这个文件里,我们可以定义函数、类或者变量。我们来看一个简单的例子:
当我们要在另一个 Python 文件里使用这个模块里的函数时,我们可以使用import语句。比如,我们创建一个新的文件main.py,在这个文件里使用math_operations模块:
这里import math_operations表示我们把math_operations模块导入到main.py文件里。然后我们使用math_operations.add(3, 5)来调用math_operations模块里的add函数,计算3 + 5的结果。
from module_name import function_name:
我们也可以只导入模块里的某个特定函数,比如:
这里from math_operations import add表示我们只从math_operations模块里导入add函数,这样我们在使用的时候就不需要再写math_operations.add了,直接写add就可以。
from module_name import *:
还有一种导入方式是from module_name import *,这种方式会把模块里的所有函数和变量都导入进来。但是这种方式不太好,因为如果有多个模块有相
这里我们把math_operations模块里的所有东西都导入了,然后直接使用add函数。不过在实际编程中,特别是大型项目里,我们要尽量避免使用这种导入方式。
包的概念和使用
包的结构:
包是一种组织模块的方式,它是一个目录,里面包含了多个模块文件,而且这个目录里必须有一个__init__.py文件(在 Python 3 中,这个文件可以为空)。我们来看一个例子,创建一个名为my_package的包:
我们可以这样导入包中的模块,比如:
这里我们先导入my_package包里的module1模块,然后使用module1模块里的some_function(假设module1里有这个函数)。
我们也可以在__init__.py文件中指定哪些模块可以被直接导入。比如在my_package/init.py中添加from. import module1,然后就可以这样使用:
这样就可以更方便地导入和使用包中的模块了。
第三方模块的安装和使用
使用包管理器(如 pip)安装第三方模块:
Python 有很多很厉害的第三方模块,我们可以用pip这个工具来安装它们。pip就像是一个应用商店,里面有各种各样的 Python 模块。比如说,我们要安装numpy这个用于科学计算的模块,我们可以在命令行里输入pip install numpy(前提是你的电脑已经安装了pip,并且pip在系统路径里能找到哦)。
导入和使用第三方模块:
安装好第三方模块后,我们就可以像使用自己创建的模块一样使用它们了。比如我们安装好numpy后,可以这样使用:
这里我们先导入numpy模块,并给它取了一个简短的名字np,然后使用np.array函数创建了一个数组并打印出来。
到此这篇python函数def讲解(python def函数怎么调用函数)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/pythonbc/60258.html