[TOC]
Python的模块
python模块可以定义为python程序文件,其中包含python代码,包括python函数,类或变量。Python中的模块为我们提供了以逻辑方式组织代码的灵活性。
python模块可以定义为python程序文件,其中包含python代码,包括python函数,类或变量。换句话说,我们可以说用扩展名(.py
)保存的python代码文件被视为模块。我们可能在python模块中有一个可运行的代码。
Python中的模块为我们提供了以逻辑方式组织代码的灵活性。
要将一个模块的功能用于另一个模块,我们必须导入特定的模块。
例
在此示例中,我们将创建一个名为file.py
的模块,其中包含一个函数func
,其中包含用于在控制台上打印某些消息的代码。
让我们创建名为file.py
的模块。
#displayMsg prints a message to the name being passed.
def displayMsg(name)
print("Hi "+name);
在这里,我们需要将这个模块包含到我们的主模块中,以调用名为file的模块中定义的方法displayMsg()
。
在我们的python代码中加载模块
我们需要在python代码中加载模块以使用它的功能。Python提供了两种类型的语句,如下所述。
Import 声明
from-import语句
Import声明
import语句用于将一个模块的所有功能导入另一个模块。在这里,我们必须注意,我们可以通过将该文件作为模块导入另一个python源文件来使用任何python源文件的功能。
我们可以使用单个import语句导入多个模块,但无论次数如何,模块都会被加载一次,它已被导入到我们的文件中。
下面给出了使用import语句的语法。
import module1,module2,........ module n
因此,如果我们需要调用文件file.py中定义的函数displayMsg()
,我们必须将该文件作为模块导入到我们的模块中,如下例所示。
例:
import file;
name = input("Enter the name?")
file.displayMsg(name)
输出:
Enter the name?John
Hi John
from-import语句
python不是将整个模块导入命名空间,而是提供了仅导入模块特定属性的灵活性。这可以通过使用from来完成?进口声明。下面给出了使用from-import
语句的语法。
from < module-name> import , ..,
考虑以下称为计算的模块,其中包含三个函数:求和,乘法和除法。
calculation.py:
#place the code in the calculation.py
def summation(a,b):
return a+b
def multiplication(a,b):
return a*b;
def divide(a,b):
return a/b;
Main.py:
from calculation import summation
#it will import only the summation() from calculation.py
a = int(input("Enter the first number"))
b = int(input("Enter the second number"))
print("Sum = ",summation(a,b)) #we do not need to specify the module name while accessing summation()
输出:
Enter the first number10
Enter the second number20
Sum = 30
如果我们事先知道要从模块导入的属性,那么from ... import
语句总是更好用。它不会让我们的代码更重。我们还可以使用*从模块导入所有属性。
请考虑以下语法。
from import *
重命名模块
Python为我们提供了导入具有特定名称的模块的灵活性,以便我们可以使用此名称在python源文件中使用该模块。
下面给出了重命名模块的语法。
import as
例
#the module calculation of previous example is imported in this example as cal.
import calculation as cal;
a = int(input("Enter a?"));
b = int(input("Enter b?"));
print("Sum = ",cal.summation(a,b))
输出:
Enter a?10
Enter b?20
Sum = 30
使用dir()函数
dir()
函数返回已传递模块中定义的已排序名称列表。此列表包含此模块中定义的所有子模块,变量和函数。
请考虑以下示例。
例
import json
List = dir(json)
print(List)
输出:
['JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__builtins__', '__cached__', '__doc__',
'__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__',
'_default_decoder', '_default_encoder', 'decoder', 'dump', 'dumps', 'encoder', 'load', 'loads', 'scanner']
reload()函数
正如我们已经声明的那样,无论将模块导入python源文件的次数如何,都会加载一次模块。但是,如果要重新加载已导入的模块以重新执行顶级代码,python为我们提供了reload()
函数。下面给出了使用reload()
函数的语法。
reload()
例如,要重新加载前一个示例中定义的模块计算,我们必须使用以下代码行。
reload(calculation)
变量范围
在Python中,变量与两种类型的范围相关联。模块中定义的所有变量都包含全局范围,除非或直到在函数中定义它。
函数内定义的所有变量都包含仅限于此函数本身的局部范围。我们无法全局访问本地变量。
如果使用两个不同的范围(即local和global)定义了两个具有相同名称的变量,那么优先级将始终赋予局部变量。
请考虑以下示例。
例
name = "john"
def print_name(name):
print("Hi",name) #prints the name that is local to this function only.
name = input("Enter the name?")
print_name(name)
输出:
Hi David
Python包
python中的包通过提供分层目录结构来促进开发人员使用应用程序开发环境,其中包包含子包,模块和子模块。这些包用于有效地分类应用程序级代码。
让我们在您的主目录中创建一个名为Employees的包。请考虑以下步骤。
1.在路径/ home
上创建名为Employees的目录。
2.在路径/ home / Employees
上创建名为ITEmployees.py
的python源文件。
ITEmployees.py
def getITNames():
List = ["John", "David", "Nick", "Martin"]
return List;
3.同样,再创建一个名为BPOEmployees.py
的python文件,并创建一个函数getBPONames()
。
4.现在,我们在第一步中创建的Employees目录包含两个python模块。要使这个目录成为一个包,我们需要在这里再包含一个文件,即init.py,它包含此目录中定义的模块的import语句。
init.py
from ITEmployees import getITNames
from BPOEmployees import getBPONames
5.现在,Employees目录已成为包含两个python模块的包。在这里我们必须注意,我们必须在目录中创建init.py以将此目录转换为包。
6.要使用Employees包中定义的模块,我们必须在python源文件中导入它。让我们在我们的主目录(/ home
)中创建一个简单的python源文件,该文件使用此包中定义的模块。
Test.py
import Employees
print(Employees.getNames())
输出:
['John','David','Nick','Martin']
我们可以在包中包含子包。我们可以根据应用要求将包嵌套到任何级别。
下图显示了应用程序库管理系统的目录结构,其中包含三个子程序包:Admin,Librarian和Student。子包包含python模块。
Python中的日期和时间
在python中,日期不是数据类型,但我们可以通过导入以datetime,time和calendar命名的模块来处理日期对象。通过日期和时间的控制我们可以获取时间,或者安排脚本在某些特定的时间运行。
在现实世界的应用程序中,有些情况需要我们处理日期和时间。python中有一些例子,我们必须安排脚本在某些特定的时间运行。
在python中,日期不是数据类型,但我们可以通过导入以datetime,time和calendar命名的模块来处理日期对象。
在本教程的这一部分中,我们将讨论如何在python中使用日期和时间对象。
tick
在python中,时间瞬间从1970年1月1日上午12点开始计算。模块时间的函数time()
返回自1970年1月1日上午12点以来所花费的总秒数。刻度可以看作是最小的单位。衡量时间。
请考虑以下示例。
例
import time;
#prints the number of ticks spent since 12 AM, 1st January 1970
print(time.time())
输出:
1545124460.9151757
如何获得当前时间?
time模块的localtime()
函数用于获取当前时间元组。请考虑以下示例。
例
import time;
#returns a time tuple
print(time.localtime(time.time()))
输出:
time.struct_time(tm_year = 2018,tm_mon = 12,tm_mday = 18,tm_hour = 15,tm_min = 1,
tm_sec = 32,tm_wday = 1,tm_yday = 352,tm_isdst = 0)
时间元组
时间被视为9个数字的元组。让我们看一下时间元组的成员。
Index | Attribute | Values |
0 | Year | 4 digit (for example 2018) |
Month | 1 to 12 | |
Day | 1 to 31 | |
Hour | 0 to 23 | |
Minute | 0 to 59 | |
Second | 0 to 60 | |
Day of weak | 0 to 6 | |
Day of year | 1 to 366 | |
Daylight savings | -1, 0, 1 , or -1 |
获得格式化时间
可以使用time模块的asctime()
函数格式化时间。它返回传递时间元组的格式化时间。
例
import time;
#returns the formatted time
print(time.asctime(time.localtime(time.time())))
输出:
Tue Dec 18 15:31:39 2018
Python睡眠时间
时间模块的sleep()
方法用于在给定的时间内停止脚本的执行。输出将延迟指定为float的秒数。
请考虑以下示例。
例
import time
for i in range(0,5):
print(i)
#Each element will be printed after 1 second
time.sleep(1)
输出:
0
1
2
3
4
日期时间模块
datetime模块使我们能够创建自定义日期对象,在比较等日期执行各种操作。
要将日期作为日期对象使用,我们必须将datetime模块导入到python源代码中。
请考虑以下示例以获取当前时间的datetime对象表示。
例
import datetime;
#returns the current datetime object
print(datetime.datetime.now())
输出:
2018-12-18 16:16:45.462778
创建日期对象
我们可以通过在要为其创建日期对象的datetime
构造函数中传递所需日期来创建日期对象。
请考虑以下示例。
例
import datetime;
#returns the datetime object for the specified date
print(datetime.datetime(2018,12,10))
输出:
2018-12-10 00:00:00
我们还可以指定时间以及创建datetime对象的日期。请考虑以下示例。
例
import datetime;
#returns the datetime object for the specified time
print(datetime.datetime(2018,12,10,14,15,10))
输出:
2018-12-10 14:15:10
两个日期的比较
我们可以使用比较运算符比较两个日期,例如>
,> =
,<
和<=
。
请考虑以下示例。
例
from datetime import datetime as dt
#Compares the time. If the time is in between 8AM and 4PM, then it prints working hours otherwise it prints fun hours
if dt(dt.now().year,dt.now().month,dt.now().day,8)print("Working hours....")
else:
print("fun hours")
输出:
fun hours
日历模块
Python提供了一个日历对象,其中包含用于处理日历的各种方法。
请考虑以下示例来打印2018年最后一个月的日历。
例
import calendar;
cal = calendar.month(2018,12)
#printing the calendar of December 2018
print(cal)
输出:
Python日期和时间
打印全年日历
日历模块的prcal()
方法用于打印全年的日历。必须将要打印日历的年份传递给此方法。
例
import calendar
#printing the calendar of the year 2019
calendar.prcal(2019)
输出:
Python中邮件发送
发送邮件传输协议(SMTP)用作使用python处理电子邮件传输的协议。它用于在电子邮件服务器之间路由电子邮件。Python提供了smtplib
模块,该模块定义了一个SMTP客户端会话对象,用于将电子邮件发送到Internet
机器。
发送邮件传输协议(SMTP)用作使用python处理电子邮件传输的协议。它用于在电子邮件服务器之间路由电子邮件。
Python提供了smtplib模块,该模块定义了一个SMTP客户端会话对象,用于将电子邮件发送到Internet机器。为此,我们必须使用import语句导入smtplib模块。
$ import smtplib
SMTP对象用于电子邮件传输。以下语法用于创建smtplib对象。
import smtplib
smtpObj = smtplib.SMTP(host,port,local_hostname)
它接受以下参数。
host:它是运行SMTP服务器的计算机的主机名。在这里,我们可以指定服务器的IP地址,或localhost。这是一个可选参数。
port:主机正在侦听SMTP连接的端口号。默认为25。
local_hostname:如果SMTP服务器在本地计算机上运行,我们可以提及本地计算机的主机名。
SMTP对象的sendmail()
方法用于将邮件发送到所需的计算机。语法如下。
smtpObj.sendmail(sender, receiver, message)
例
#!/usr/bin/python3
import smtplib
sender_mail = 'sender@fromdomain.com'
receivers_mail = ['reciever@todomain.com']
message = """From: From Person %s
To: To Person %s
Subject: Sending SMTP e-mail
This is a test e-mail message.
"""%(sender_mail,receivers_mail)
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender_mail, receivers_mail, message)
print("Successfully sent email")
except Exception:
print("Error: unable to send email")
从gmail发送电子邮件
有些情况下使用gmail SMTP服务器发送电子邮件。在这种情况下,我们可以将gmail作为SMTP服务器传递,而不是将localhost与端口587一起使用。
使用以下语法。
$ smtpObj = smtplib.SMTP(“gmail.com” , 587 )
在这里,我们需要使用gmail用户名和密码登录gmail帐户。为此,smtplib提供了login()
方法,该方法接受发件人的用户名和密码。
请考虑以下示例。
例
#!/usr/bin/python3
import smtplib
sender_mail = 'sender@gmail.com'
receivers_mail = ['reciever@gmail.com']
message = """From: From Person %s
To: To Person %s
Subject: Sending SMTP e-mail
This is a test e-mail message.
"""%(sender_mail,receivers_mail)
try:
password = input('Enter the password');
smtpObj = smtplib.SMTP('gmail.com',587)
smtpobj.login(sender_mail,password)
smtpObj.sendmail(sender_mail, receivers_mail, message)
print("Successfully sent email")
except Exception:
print("Error: unable to send email")
在电子邮件中发送HTML
我们可以通过指定要发送HTML的MIME版本,内容类型和字符集来格式化消息中的HTML。
请考虑以下示例。
例
#!/usr/bin/python3
import smtplib
sender_mail = 'sender@fromdomain.com'
receivers_mail = ['reciever@todomain.com']
message = """From: From Person %s
To: To Person %s
MIME-Version:1.0
Content-type:text/html
Subject: Sending SMTP e-mail
Python SMTP
This is a test e-mail message.
"""%(sender_mail,receivers_mail)
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender_mail, receivers_mail, message)
print("Successfully sent email")
except Exception:
print("Error: unable to send email")
END