概述
我们已经知道定义一次函数而重用代码。如果你想要在其他程
序中重用很多函数,那么你该如何编写程序呢?答案是使用模块。
编写模块有各种各样的方法,但最简单的方法就是创建以 .py 为扩展名的文件,在文件中包含函数和变量。
在Python中有一个概念叫做模块(module),比如要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块。
说的通俗点:模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块(即想用包,先导包。).
import
在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入。
形如: import module1,mudule2
当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。
在调用math模块中的函数时,必须这样引用:
模块名.函数名
sqrt(4)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-2-317e033d29d5> in <module>
----> 1 sqrt(4)
NameError: name 'sqrt' is not defined
import math
math.cos(10) # -0.8390715290764524
math.sqrt(4) # 2.0
问:为什么必须加上模块名调用呢?
答:因为可能存在这样一种情况:在多个模块中含有相同名称的函数,此时如果只是通过函数名来调用,解释器无法知道到底要调用哪个函数。所以如果像上述这样引入模块的时候,调用函数必须加上模块名
import math
#这样会报错
print (sqrt(2))
#这样才能正确输出结果
print (math.sqrt(2))
from 模块名 import 函数名1,函数名2…
有时候我们只需要用到模块中的某个函数,只需要引入该函数即可,此时可以用下面方法实现:
from 模块名 import 函数名1,函数名2
不仅可以引入函数,还可以引入一些全局变量、类等
注意:通过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块名,但是当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一次引入。也就是说假如模块A中有函数function( ),在模块B中也有函数function( ),如果引入A中的function在先、B中的function在后,那么当调用function函数的时候,是去执行模块B中的function函数。
如果想一次性引入math中所有的东西,还可以通过from math import *来实现
from math import sin # 导入一个函数
sin(10)
from math import cos, tan, sqrt # 一次性导入多个函数
cos(10) #-0.8390715290764524
tan(10)
from math import * # 一次性导入所有函数
floor(3.7) #3
ceil(3.7) #4
from datetime import datetime
datetime.now()
t = datetime.now()
print(t) #以时间格式打印 2020-05-24 17:41:02.336405
t.year
t.month # 5
datetime.timestamp(t) # 1590313262.336405
as
把模块名称进行简写, 输入起来比较方便一些
import math as m
m.sin(10)
打印模块中的全部属性和函数
import math
print(dir(math))
import datetime
print(dir(datetime))
import calendar
print(dir(datetime))
print(calendar.month(2020, 5))#看2020年5月的日历
print(calendar.calendar(2019)) #查看2019年的日历
calendar.isleap(2020) #判断是否是闰年
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']
['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']
May 2020
Mo Tu We Th Fr Sa Su
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
cal = calendar.month(2011, 11)
print(cal)
calendar.setfirstweekday(calendar.SUNDAY) #默认返回0:星期一
print(cal)
November 2011
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
November 2011
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
最后
以上就是着急蜗牛为你收集整理的python模块的导入以及使用的全部内容,希望文章能够帮你解决python模块的导入以及使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复