30.从入门到精通:Python3 命名空间和作用域 命名空间 作用域 Python3 标准库概览 操作系统接口 文件通配符 命令行参数 错误输出重定向和程序终止 字符串正则匹配 访问 互联网 日期和

简介: 30.从入门到精通:Python3 命名空间和作用域 命名空间 作用域 Python3 标准库概览 操作系统接口 文件通配符 命令行参数 错误输出重定向和程序终止 字符串正则匹配 访问 互联网 日期和

Python3 命名空间和作用域

命名空间

在Python中,命名空间是指用于存储变量名称和其对应值的区域。每个命名空间都有一个唯一的名称,并且在不同的命名空间中可以使用相同的变量名称,而不会互相干扰。

Python中有以下几种命名空间:

内置命名空间(built-in namespace):包含了Python解释器内置的函数和变量,例如print()函数和int类型。

全局命名空间(globalnamespace):在模块中定义的变量和函数属于全局命名空间。在模块中定义的变量和函数可以在模块中的任何位置访问。

局部命名空间(local namespace):在函数内部定义的变量和函数属于局部命名空间。在函数内部定义的变量和函数只能在函数内部访问。

当Python解释器遇到一个变量时,它会按照以下顺序查找命名空间:

1.首先查找局部命名空间,如果变量在局部命名空间中找到,则使用该变量。

2.如果变量不在局部命名空间中,则查找全局命名空间。如果变量在全局命名空间中找到,则使用该变量。

3.如果变量不在全局命名空间中,则查找内置命名空间。如果变量在内置命名空间中找到,则使用该变量。

4.如果变量在任何一个命名空间中都没有找到,则会引发NameError异常。


需要注意的是,当在函数内部访问一个变量时,Python解释器会首先查找局部命名空间,如果该变量在局部命名空间中不存在,则会查找全局命名空间。如果该变量在全局命名空间中也不存在,则会引发NameError异常。


作用域

Python3中有两种作用域,分别是全局作用域和局部作用域。

全局作用域是指在整个程序中都可以访问的变量,一般定义在程序的最外层。在函数内部可以通过global关键字来声明一个变量为全局变量。

  • 局部作用域是指在函数内部定义的变量,只能在函数内部访问。当函数执行完毕后,局部变量的作用域也就结束了。在函数内部可以通过nonlocal关键字来声明一个变量为非局部变量,即在嵌套函数中访问外层函数的变量。

在Python3中,变量的作用域遵循LEGB规则,即Local(局部)、Enclosing(嵌套)、Global(全局)、Built-in(内置)的顺序。当在函数内部访问一个变量时,Python3会按照这个顺序查找变量的值。例如,如果在函数内部访问一个变量,Python3会首先查找局部作用域中是否存在这个变量,如果不存在,则查找嵌套作用域中是否存在这个变量,如果还不存在,则查找全局作用域中是否存在这个变量,最后查找内置作用域中是否存在这个变量。如果在所有作用域中都找不到这个变量,Python3会抛出NameError异常。


Python3 标准库概览

Python标准库是Python语言的核心部分之一,它提供了许多有用的模块和函数,可以用于各种不同的任务。以下是Python标准库的一些常用模块和函数的概述:

os模块:提供了与操作系统交互的函数,例如文件操作、进程管理等。

sys模块:提供了与Python解释器交互的函数,例如命令行参数、标准输入输出等。

re模块:提供了正则表达式操作的函数。

datetime模块:提供了日期和时间操作的函数。

random模块:提供了生成随机数的函数。

math模块:提供了数学函数,例如三角函数、指数函数等。

json模块:提供了JSON编码和解码的函数。

urllib模块:提供了HTTP请求的函数。

sqlite3模块:提供了SQLite数据库的函数。

csv模块:提供了CSV文件读写的函数。


以上只是Python标准库中的一小部分,还有许多其他有用的模块和函数,可以根据需要选择使用。可以通过Python官方文档查看完整的标准库文档。


操作系统接口

操作系统接口是指操作系统提供给应用程序或用户的一组功能和服务,用于访问和管理计算机硬件和软件资源。操作系统接口可以分为以下几类:


文件系统接口:用于管理文件和目录,包括创建、删除、移动、复制、重命名等操作。

进程管理接口:用于管理进程,包括创建、终止、调度、同步、通信等操作。

内存管理接口:用于管理计算机内存,包括分配、释放、保护、共享等操作。

设备管理接口:用于管理计算机硬件设备,包括初始化、读写、控制、中断处理等操作。

网络管理接口:用于管理计算机网络,包括连接、断开、传输、协议处理等操作。


不同的操作系统提供的接口可能有所不同,但是它们都提供了一定程度的标准化接口,以便应用程序能够在不同的操作系统上运行。例如,POSIX接口是一组标准化的操作系统接口,可以在Unix和类Unix操作系统上使用。而Windows操作系统提供的接口则是基于Win32

API和.NET Framework的。


文件通配符

文件通配符是一种用于匹配文件名的模式,通常用于在命令行中指定一组文件。在Unix和类Unix操作系统中,文件通配符通常使用shell扩展来实现。

以下是常用的文件通配符:

  • *:匹配任意字符,包括空字符。
  • ?:匹配任意单个字符。
  • […]:匹配括号内的任意一个字符。例如,[abc]可以匹配字符a、b或c。
  • […]:匹配不在括号内的任意一个字符。例如,[abc]可以匹配除了字符a、b和c之外的任意字符。


例如,如果要匹配所有以.txt结尾的文件,可以使用通配符*.txt。如果要匹配所有以数字开头的文件,可以使用通配符[0-9]。

在Python中,可以使用glob模块来实现文件通配符匹配。例如,glob.glob('.txt’)可以匹配当前目录下所有以.txt结尾的文件。


命令行参数

在计算机程序中,命令行参数是指在程序启动时,从命令行传递给程序的一组参数。这些参数可以用来控制程序的行为,或者传递程序需要的数据。

  • 在Python中,可以使用sys模块中的argv变量来获取命令行参数。argv变量是一个列表,其中第一个元素是程序本身的名称,后面的元素是传递给程序的命令行参数。.

例如,下面是一个简单的Python程序,可以接受两个命令行参数并将它们相加:

import sys
if len(sys.argv) != 3:
    print("Usage: python program.py arg1 arg2")
else:
    arg1 = int(sys.argv[1])
    arg2 = int(sys.argv[2])
    print(arg1 + arg2)

在这个程序中,首先检查命令行参数的数量是否为3,如果不是,则打印出程序的使用方法。如果命令行参数的数量正确,则将第一个和第二个参数转换为整数,并将它们相加,然后输出结果。

可以在命令行中运行这个程序,例如:

python program.py 2 3

这将输出5,因为程序将2和3相加。


错误输出重定向和程序终止

在Python中,可以使用错误输出重定向来将错误信息输出到指定的文件或设备,而不是默认输出到屏幕上。

以下是将错误输出重定向到文件的示例:

import sys
try:
    # some code that may raise an exception
    pass
except Exception as e:
    # redirect error output to a file
    sys.stderr = open('error.log', 'w')
    print('An error occurred:', e)
    # restore error output to the default value
    sys.stderr = sys.__stderr__

在上面的代码中,我们使用sys.stderr将错误输出重定向到error.log文件中,然后打印错误信息。最后,我们将错误输出恢复为默认值。


如果程序遇到无法处理的错误,可以使用sys.exit()函数来终止程序的执行。该函数接受一个可选的整数参数,表示程序的退出状态码。通常,0表示程序正常退出,非零值表示程序异常终止。

以下是一个示例:

import sys
try:
    # some code that may raise an exception
    pass
except Exception as e:
    print('An error occurred:', e)
    sys.exit(1)  # exit with error status

在上面的代码中,如果程序遇到异常,它将打印错误信息并以状态码1退出。


字符串正则匹配

在Python中,可以使用re模块进行字符串正则匹配。re模块提供了一组函数,用于在字符串中搜索和匹配模式。

下面是一个简单的例子,说明如何使用re模块进行字符串正则匹配:

import re
# 定义一个正则表达式
pattern = r"hello\s+(\w+)"
# 定义一个字符串
string = "hello world, hello python, hello java"
# 使用正则表达式进行匹配
result = re.findall(pattern, string)
# 输出匹配结果
print(result)

在这个例子中,首先定义了一个正则表达式,它表示以"hello

"开头,后面跟着一个或多个空格,然后是一个单词。然后定义了一个字符串,其中包含了多个符合这个模式的子串。接下来使用re模块中的findall函数进行匹配,它会返回一个列表,其中包含了所有符合模式的子串。最后输出匹配结果,可以看到输出的结果是一个列表,其中包含了所有匹配到的单词。

除了findall函数之外,re模块还提供了其他一些函数,用于进行字符串正则匹配,例如search函数、match函数、sub函数等等。这些函数的具体用法和参数可以查看Python官方文档。


访问 互联网

要访问互联网,可以使用Python内置的urllib模块。urllib模块提供了一组函数,用于处理URL和HTTP请求。

下面是一个简单的例子,说明如何使用urllib模块访问一个网页:

import urllib.request
# 要访问的网页URL
url = "https://www.baidu.com"
# 发送HTTP请求,获取响应
response = urllib.request.urlopen(url)
# 读取响应内容
html = response.read()
# 输出网页内容
print(html)

在这个例子中,首先定义了一个要访问的网页URL。然后使用urllib.request.urlopen函数发送HTTP请求,获取响应。最后读取响应内容,并输出网页内容。

除了urllib模块之外,还可以使用第三方库requests来访问互联网。requests库提供了更加简洁和方便的API,可以更加方便地发送HTTP请求和处理响应。

下面是一个使用requests库访问网页的例子:

import requests
# 要访问的网页URL
url = "https://www.baidu.com"
# 发送HTTP请求,获取响应
response = requests.get(url)
# 读取响应内容
html = response.text
# 输出网页内容
print(html)
  • 在这个例子中,首先定义了一个要访问的网页URL。然后使用requests库中的get函数发送HTTP请求,获取响应。最后读取响应内容,并输出网页内容。

需要注意的是,访问互联网可能会受到网络环境和访问权限的限制,有些网站可能需要登录或者使用代理才能访问。另外,访问互联网还需要注意遵守相关法律法规和网站的使用规定。


日期和时间

在Python中,可以使用datetime模块来处理日期和时间。
下面是一些常见的日期和时间操作:

获取当前日期和时间:

import datetime
now = datetime.datetime.now()
print(now)

这将输出当前日期和时间,例如:

2021-08-12 14:23:50.123456

格式化日期和时间:

import datetime
now = datetime.datetime.now()
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted)

这将输出格式化后的日期和时间,例如:

2021-08-12 14:23:50

在这个例子中,使用strftime函数将日期和时间格式化为指定的字符串。

计算日期和时间的差值:

import datetime
start = datetime.datetime(2021, 8, 1)
end = datetime.datetime.now()
delta = end - start
print(delta)

这将输出两个日期和时间之间的差值,例如:

11 days, 14:23:50.123456

在这个例子中,首先定义了两个日期和时间,然后使用减法运算符计算它们之间的差值。


除了这些基本操作之外,datetime模块还提供了许多其他的日期和时间操作,例如时区转换、日期和时间的加减、日期和时间的比较等等。可以查看Python官方文档了解更多信息。


相关实践学习
CentOS 8迁移Anolis OS 8
Anolis OS 8在做出差异性开发同时,在生态上和依赖管理上保持跟CentOS 8.x兼容,本文为您介绍如何通过AOMS迁移工具实现CentOS 8.x到Anolis OS 8的迁移。
相关文章
|
1天前
|
缓存 算法 数据处理
Python入门:9.递归函数和高阶函数
在 Python 编程中,函数是核心组成部分之一。递归函数和高阶函数是 Python 中两个非常重要的特性。递归函数帮助我们以更直观的方式处理重复性问题,而高阶函数通过函数作为参数或返回值,为代码增添了极大的灵活性和优雅性。无论是实现复杂的算法还是处理数据流,这些工具都在开发者的工具箱中扮演着重要角色。本文将从概念入手,逐步带你掌握递归函数、匿名函数(lambda)以及高阶函数的核心要领和应用技巧。
Python入门:9.递归函数和高阶函数
|
1天前
|
开发者 Python
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
|
1天前
|
存储 SQL 索引
Python入门:7.Pythond的内置容器
Python 提供了强大的内置容器(container)类型,用于存储和操作数据。容器是 Python 数据结构的核心部分,理解它们对于写出高效、可读的代码至关重要。在这篇博客中,我们将详细介绍 Python 的五种主要内置容器:字符串(str)、列表(list)、元组(tuple)、字典(dict)和集合(set)。
Python入门:7.Pythond的内置容器
|
1天前
|
存储 索引 Python
Python入门:6.深入解析Python中的序列
在 Python 中,**序列**是一种有序的数据结构,广泛应用于数据存储、操作和处理。序列的一个显著特点是支持通过**索引**访问数据。常见的序列类型包括字符串(`str`)、列表(`list`)和元组(`tuple`)。这些序列各有特点,既可以存储简单的字符,也可以存储复杂的对象。 为了帮助初学者掌握 Python 中的序列操作,本文将围绕**字符串**、**列表**和**元组**这三种序列类型,详细介绍其定义、常用方法和具体示例。
Python入门:6.深入解析Python中的序列
|
6天前
|
运维 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot 是阿里云推出的一款操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行和系统运维调优等功能。通过简单的命令行操作,用户可以快速获取所需信息并执行任务,极大提升了Linux系统的使用效率。安装步骤简单,只需在阿里云服务器上运行几条命令即可完成部署。使用过程中,OS Copilot不仅能帮助查找命令,还能处理文件和复杂场景,显著节省了查找资料的时间。体验中发现,部分输出格式和偶尔出现的英文提示有待优化,但整体非常实用,特别适合Linux初学者。
51 10
|
1月前
|
弹性计算 运维 Ubuntu
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
75 7
|
1月前
|
存储 运维 安全
深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器
本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功能和优势。
68 6
|
1月前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
|
1月前
|
弹性计算 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot是由阿里云推出的操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行等功能,极大提升了Linux系统的使用效率。用户只需通过简单的命令或自然语言描述问题,OS Copilot即可快速提供解决方案并执行相应操作。例如,查询磁盘使用量等常见任务变得轻松快捷。此外,它还支持从文件读取复杂任务定义,进一步简化了操作流程。虽然在某些模式下可能存在小问题,但总体上大大节省了学习和操作时间,提高了工作效率。
136 2
OS Copilot-操作系统智能助手-Linux新手小白的福音
|
3月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
143 4

推荐镜像

更多