我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python函数和模块如何使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python函数和模块如何使用

这篇“Python函数和模块如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python函数和模块如何使用”文章吧。

一、定义函数

在Python中可以使用def关键字来定义函数,命名规则跟变量的命名规则是一致的。在函数名后面的圆括号中可以放置传递给函数的参数,而函数执行完成后我们可以通过return关键字来返回一个值。

定义代码如下:

def fac(num):    """求阶乘"""    result = 1    for n in range(1, num + 1):        result *= n    #返回值    return result

二、函数的参数

在Python中,函数的参数可以有默认值,也支持使用可变参数,所以Python并不需要像其他语言一样支持函数的重载,因为我们在定义一个函数的时候可以让它有多种不同的使用方式,

下面是两个小例子:

from random import randint  def roll_dice(n=2):    """摇色子"""    total = 0    for _ in range(n):        total += randint(1, 6)    return total  def add(a=0, b=0, c=0):    """三个数相加"""    return a + 2 * b + 3 * c  # 如果没有指定参数那么使用默认值摇两颗色子print(roll_dice())# 摇三颗色子print(roll_dice(3))#函数重载,没有指定函数变量时,参数按照顺序传值print(add())print(add(1))print(add(1, 2))print(add(1, 2, 3))# 传递参数时可以不按照设定的顺序进行传递print(add(c=50, a=100, b=200))# 或者可以不传print(add(c=50, b=200)) if __name__ == '__main__':    pass

没有传入对应参数的值时将使用该参数的默认值。

不确定参数个数的时候,我们可以使用可变参数,代码如下所示:

# 在参数名前面的*表示args是一个可变参数def add(*args):    total = 0    for val in args:        total += val    return total  # 在调用add函数时可以传入0个或多个参数print(add())print(add(1))print(add(1, 2))print(add(1, 2, 3))print(add(1, 3, 5, 7, 9))

三、用模块管理函数

由于Python没有函数重载的概念,那么后面的定义函数会覆盖之前的定义,也就意味着两个函数同名函数实际上只有一个是存在的。

def foo():    print('hello, world!')  def foo():    print('goodbye, world!')  # 下面的代码会输出什么呢?foo() if __name__ == '__main__':    pass #实际输出goodbye, world!

多人协作进行团队开发的时候,团队中可能有多个程序员都定义了名为foo的函数,那么怎么解决这种命名冲突呢?

重点如何避免函数覆盖!!!

在Python中每个.py文件就代表了一个模块(module),我们在不同的模块中可以有同名的函数,在使用函数的时候我们通过import关键字导入指定的模块就可以区分到底要使用的是哪个模块中的foo函数,

代码如下所示:

module1.py def foo():    print('hello, world!') module2.py def foo():    print('goodbye, world!')

导入模块:

test.py import module1 as m1import module2 as m2 m1.foo()m2.foo()

注意:但是如果将代码写成了下面的样子,那么程序中调用的是最后导入的那个foo,因为后导入的foo覆盖了之前导入的foo。

from module1 import foofrom module2 import foo # 输出goodbye, world!,使用的是后导入的模块foo()

需要说明的是,如果我们导入的模块除了定义函数之外还有可以执行代码,那么Python解释器在导入这个模块时就会执行这些代码,事实上我们不想执行这些代码,那我们将可执行代码放入如下所示的条件中,这样的话除非直接运行该模块,if条件下的这些代码是不会执行的,因为只有直接执行的模块的名字才是"__main__"

def foo():    pass def bar():    pass # __name__是Python中一个隐含的变量它代表了模块的名字# 只有被Python解释器直接执行的模块的名字才是__main__if __name__ == '__main__':    print('call foo()')    foo()    print('call bar()')    bar()
import module3# 导入module3时 不会执行模块中if条件成立时的代码 因为模块的名字是module3而不是__main__

四、变量的作用域 

def foo():    b = 'hello'     # Python中可以在函数内部再定义函数    def bar():        c = True        print(a)        print(b)        print(c)     bar()    # print(c)  # NameError: name 'c' is not defined  if __name__ == '__main__':    a = 100    # print(b)  # NameError: name 'b' is not defined    foo()

打印结果:

100
hello
True

上面的代码能够顺利的执行并且打印出100、hello和True,但我们注意到了,在bar函数的内部并没有定义a和b两个变量,那么a和b是从哪里来的。

我们在上面代码的if分支中定义了一个变量a,这是一个全局变量(global variable),属于全局作用域,因为它没有定义在任何一个函数中。

在上面的foo函数中我们定义了变量b,这是一个定义在函数中的局部变量(local variable),属于局部作用域,在foo函数的外部并不能访问到它;但对于foo函数内部的bar函数来说,变量b属于嵌套作用域,在bar函数中我们是可以访问到它的。

bar函数中的变量c属于局部作用域,在bar函数之外是无法访问的。

Python查找变量顺序:

“局部作用域”-》“嵌套作用域”-》“全局作用域”和“内置作用域”的顺序进行搜索。

内置作用域:Python内置的那些标识符,我们之前用过的input、print、int等都属于内置作用域。

我们希望通过函数调用修改全局变量a的值,但实际上下面的代码是做不到的。

代码如下:

def foo():    a = 200    print(a)  # 200  if __name__ == '__main__':    #这里变量值不能修改函数局部变量的值    a = 100    foo()    print(a)  # 100

在调用foo函数后,我们发现a的值仍然是100,这是因为当我们在函数foo中写a = 200的时候,是重新定义了一个名字为a的局部变量,它跟全局作用域的a并不是同一个变量。

因为局部作用域中有了自己的变量a,因此foo函数不再搜索全局作用域中的a。如果我们希望在foo函数中修改全局作用域中的a,

代码如下所示:

def foo():    global a    a = 200    print(a)  # 200  if __name__ == '__main__':    a = 100    foo()    print(a)  # 200

可以使用global关键字来指示foo函数中的变量a来自于全局作用域。

注:

在实际开发中,我们应该尽量减少对全局变量的使用,因为全局变量的作用域和影响过于广泛,可能会发生意料之外的修改和使用。

除此之外全局变量比局部变量拥有更长的生命周期,可能导致对象占用的内存长时间无法被垃圾回收

以上就是关于“Python函数和模块如何使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python函数和模块如何使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python函数和模块如何使用

这篇“Python函数和模块如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python函数和模块如何使用”文章吧。一
2023-06-30

Python中如何使用模块级函数

本篇文章为大家展示了Python中如何使用模块级函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。你不一定要产生一个 `RegexObject` 对象然後再调用它的方法;re 模块也提供了***函数
2023-06-17

怎么使用Python函数和模块

本篇内容介绍了“怎么使用Python函数和模块”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在讲解本章节的内容之前,我们先来研究一道数学题,
2023-06-01

Python函数和模块怎么使用

本篇内容介绍了“Python函数和模块怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、函数和模块概述(一)函数概述函数可以看成是语
2023-06-22

python高阶函数functools模块如何使用

本篇内容主要讲解“python高阶函数functools模块如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python高阶函数functools模块如何使用”吧!functools模块提
2023-07-05

Python base64和hashlib模块如何使用

本文小编为大家详细介绍“Python base64和hashlib模块如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python base64和hashlib模块如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来
2023-07-05

Python基础之函数和模块

函数的基本使用函数的定义:把具有独立功能的代码块组织成一个小模块,在需要的时候调用。或者说,函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数的使用:1.定义函数;2.调用函数。函数的作用:能提高应用的模块性,和代码的重
2023-01-31

Python中如何使用随机数模块

这篇文章给大家介绍Python中如何使用随机数模块,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。随机整数:>>> import random >>> random.randint(0,99) 21随机选取0到100
2023-06-17

如何使用python xml模块

本篇内容主要讲解“如何使用python xml模块”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用python xml模块”吧!一、xml简介xml是实现不同语言或程序之间进行数据交换的协
2023-06-07

Python async模块如何使用

这篇文章主要介绍“Python async模块如何使用”,在日常操作中,相信很多人在Python async模块如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python async模块如何使用”的疑
2023-07-05

Python pluggy模块如何使用

本篇内容介绍了“Python pluggy模块如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 pluggy 简介pluggy 作用
2023-06-30

python如何使用timeit模块

这篇文章给大家分享的是有关python如何使用timeit模块的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。timeit模块timeit 模块提供了测量 Python 小段代码执行时间的方法,可以在命令行界面直接
2023-06-17

python ffmpeg模块如何使用

要使用Python中的FFmpeg模块,可以按照以下步骤进行:1. 安装FFmpeg:在你的系统上安装FFmpeg。你可以从官方网站(http://ffmpeg.org/)上下载最新的版本,并按照说明进行安装。2. 安装ffmpeg-pyt
2023-10-12

Python decimal模块如何使用

这篇文章主要介绍“Python decimal模块如何使用”,在日常操作中,相信很多人在Python decimal模块如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python decimal模块如
2023-07-05

python如何使用itertools模块

这篇文章主要为大家展示了“python如何使用itertools模块”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python如何使用itertools模块”这篇文章吧。高效的itertools
2023-06-27

Python中的os和sys模块如何使用

本篇内容主要讲解“Python中的os和sys模块如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中的os和sys模块如何使用”吧!一、os模块os 模块是 Python中的一
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录