首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >三天两后晌入门Python(四)

三天两后晌入门Python(四)

作者头像
leehao
发布2025-02-11 11:16:41
发布2025-02-11 11:16:41
2350
举报
文章被收录于专栏:leehaoleehao

17、Python模块

模块允许逻辑地组织Python代码。 将相关代码分组到一个模块中,使代码更容易理解和使用。 模块是一个具有任意命名属性的Python对象,可以绑定和引用。

简单来说,模块是一个由Python代码组成的文件。模块可以定义函数,类和变量。 模块还可以包括可运行的代码。

示例

下面是一个名称为 aname 的模块的Python代码通常位于一个名称为 aname.py 的文件中。

1.import语句

可以通过在其他Python源文件中执行 import 语句来将任何Python源文件用作模块。

当解释器遇到导入语句时,如果模块存在于搜索路径中,则导入该模块。搜索路径是导入模块之前解释器搜索的目录的列表。

不管模块被导入多少次,模块只能加载一次。这样可以防止模块执行重复发生,如果有多个导入。

2.from…import语句

Python  from 语句允许将模块中的特定属性导入到当前的命名空间中。

3.from…import *语句

也可以使用以下 import 语句将模块中的所有名称导入到当前命名空间中 。

这提供了将所有项目从模块导入到当前命名空间中的简单方法; 但是,这个说法应该谨慎使用。

4.执行模块作为脚本

在模块中,模块的名称(作为字符串)可用作全局变量 __name__ 的值。模块中的代码将被执行,就像您导入它一样,但是 __name__ 设置为“ __main__ ”。

5.定位模块

当导入模块时,Python解释器将按以下顺序搜索模块 -

  • 当前目录。
  • 如果没有找到该模块,Python会在shell变量PYTHONPATH中搜索每个目录。
  • 如果其他所有失败,Python将检查默认路径。 在UNIX上,此默认路径通常是/usr/local/lib/python3/ 或者 /usr/sbin/

模块搜索路径作为 sys.path 变量存储在系统模块 sys 中。 sys.path 变量包含当前目录 PYTHONPATH 和依赖于安装的默认值。

6.PYTHONPATH变量

PYTHONPATH 是一个环境变量,由目录列表组成。  PYTHONPATH 的语法与shell变量`PATH```的语法相同。

这是一个典型的Windows系统上的 PYTHONPATH  -

set PYTHONPATH = c:\python34\lib;

Shell

这里是UNIX系统的典型 PYTHONPATH  -

set PYTHONPATH = /usr/local/lib/python

Shell

7.命名空间和范围

变量是映射到对象的名称(标识符)。 命名空间是变量名(键)及其对应对象(值)的字典。

引用全局变量,不需要golbal声明,修改全局变量,需要使用global声明,特别地,列表、字典等如果只是修改其中元素的值,可以直接使用全局变量,不需要global声明。

#!/usr/bin/python3 Money = 2000 def AddMoney (): # Uncomment the following line to fix the code: global Money Money = Money + 1 print ( Money ) AddMoney () print ( Money )

8.dir( )函数

dir() 内置函数返回一个包含由模块定义的名称的字符串的排序列表。这个列表包含模块中定义的所有模块,变量和函数的名称。 以下是一个简单的例子 - import timecontent = dir ( time )

9.globals()和locals()函数

globals() 和 locals() 函数可用于返回全局和本地命名空间中的名称,具体取决于它们被调用的位置。

  • 如果locals()从一个函数中调用,它将返回从该函数本地访问的所有名称。
  • 如果从函数中调用globals(),它将返回从该函数全局访问的所有名称。

这两个函数的返回类型是字典。 因此,可以使用 keys() 函数提取名称。

10.reload()函数

当将模块导入到脚本中时,模块的顶级部分的代码只能执行一次。

因此,如果要重新执行模块中的顶级代码,可以使用 reload() 函数。 reload() 函数再次导入以前导入的模块。  reload() 函数的语法是这样的 -

reload(module_name)

11.Python中的包

Python中的包是一个分层文件目录结构,它定义了一个由模块和子包和子子包组成的Python应用程序环境,等等。

在 package 目录中创建目录: pkg , 然后分别在这目录中创建文件: a.py 。

在 package 目录中创建一个主程序文件: main.py ,用于演示如何调用包中的各个文件 - import pkg . a as aa . fun ()

或者 import pkg . apkg . a . fun ()

18、类

基本和Java语言类似 继承、构造函数等、重载、多态等

19、处理异常

如果有一些可能引发异常的可疑代码,可以通过将可疑代码放在 try: 块中来保护您的程序。 在 try: 块之后,包括一个 except: 语句,然后是一个尽可能优雅地处理问题的代码块。

以下是上述语法的几个重点 -

  • 一个try语句可以有多个except语句。 当try块包含可能引发不同类型的异常的语句时,这就很有用。
  • 还可以提供一个通用的except子句,它处理任何异常。
  • 在except子句之后,可以包含一个else子句。 如果try:block中的代码不引发异常,则else块中的代码将执行。
  • else-block是一个不需要try:block保护的代码的地方。

try-finally子句

可以使用 finally: 块和 try: 块。  finally: 块是放置必须执行代码的地方,无论 try 块是否引发异常。 

注意 - 可以提供 except 子句或 finally 子句,但不能同时提供。不能使用 else 子句以及 finally 子句。

抛出异常

可以通过使用 raise 语句以多种方式引发异常。

如: raise Exception ( xxx )

20、Socket编程

服务端

import socket serversocket = socket.socket() host = socket.gethostname() port = 9999 serversocket.bind((host, port)) print ( "server start at port:" + str (port)) serversocket.listen( 5 ) while True : clientsocket,addr = serversocket.accept() print ( "Got a connetion from:" + str (addr)) clientsocket.send( 'thx for connection!' .encode( 'ascii' )) clientsocket.close()

客户端

import socket client = socket.socket() host = socket.gethostname() port = 9999 client.connect((host,port)) msg = client.recv( 10240 ); print (msg.decode( 'ascii' )) client.close()

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档