30.Python从入门到精通—Python3 命名空间和作用域 命名空间 作用域

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

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

个人简介

🏘️🏘️个人主页:以山河作礼。
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,CSDN内容合伙人,阿里云社区专家博主,新星计划导师,在职数据分析师。

💕💕悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。

在这里插入图片描述

🐘 希望大家能持续支持,共同向前迈进!😁
如果您觉得文章有价值,
欢迎留言💬,点赞👍,收藏🔖并关注我们➕🤝。
🪐💫💫💫💫💫💫💫热门专栏💫💫💫💫💫💫💫🪐
类型专栏
Python基础Python基础入门—详解版
Python进阶Python基础入门—模块版
Python高级Python网络爬虫从入门到精通🔥🔥🔥
Web全栈开发Django基础入门
Web全栈开发HTML与CSS基础入门
Web全栈开发JavaScript基础入门
Python数据分析Python数据分析项目🔥🔥
机器学习机器学习算法🔥🔥
人工智能人工智能

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官方文档了解更多信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/501463.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【OpenGL】使用 python + Qt + OpenGL 的现代渲染

伴随资源 目录 一、说明二、 关于PyQt6.x2.1 QOpenGLWidget详细说明2.2 绘画技巧 三、PyOpenGL四、OpenGL 管线五、Python集成开发环境5.1 Emacs配置5.2 pycharm环境 六、你好,OpenGL!七、QGL控件八、平截头体.svg九、定义几何9.1 立即模式与保留模式9…

消息队列的七种经典应用场景

在笔者心中,消息队列,缓存,分库分表是高并发解决方案三剑客。 在职业生涯中,笔者曾经使用过 ActiveMQ 、RabbitMQ 、Kafka 、RocketMQ 这些知名的消息队列 。 这篇文章,笔者结合自己的真实经历,和大家分享…

SEH异常之编译器原理探究(1)

_try_except原理 调用_except_handle3这个异常处理函数,这里并不是每个编译器的异常处理函数都是相同的,然后存入结构体,将esp的值赋给fs:[0],再就是提升堆栈的操作 每个使用 _try _except的函数,不管其内部嵌套或反复…

大模型预测,下一个token何必是文字?

太快了太快了… 大模型的生成技能,已经到了普通人看不懂的境界! 它可以根据用户过去5年的体检报告,生成未来第1年、第2年、第3年的体检报告。 你看,这个生成的过程,是不是像极了ChatGPT,根据历史单词预测…

vue-v-for遍历index与id

一.遍历列表key的作用(index作为key) 虚拟DOM上有key,是虚拟的,但是真实DOM上没有,key是Vue内部的 当使用index作为key的时候,Vue会根据初识数据生成一个初始的虚DOM, 然后在页面上映射出真实DOM 如果向数据…

Webpack生成企业站静态页面 - 项目搭建

现在Web前端流行的三大框架有Angular、React、Vue,很多项目经过这几年的洗礼,已经都 转型使用这三大框架进行开发,那为什么还要写纯静态页面呢?比如Vue中除了SPA单页面开发,也可以使用nuxt.js实现SSR服务端渲染&#x…

CrossOver2024最新免费版虚拟机软件 Mac和Linux系统上运行Windows 应用/游戏 CrossOver是什么软件

CrossOver是一款由CodeWeavers公司开发的,运行在Mac和Linux操作系统下,能够模拟Windows系统应用运行环境的软件。它不需要用户单独安装Windows操作系统,就能让Windows平台上的应用程序在Mac和Linux上顺畅运行。CrossOver在技术上使用了Wine&a…

module ‘numpy‘ has no attribute ‘int‘

在 NumPy 中,如果遇到了错误提示 "module numpy has no attribute int",这通常意味着正在尝试以错误的方式使用 NumPy 的整数类型。从 NumPy 1.20 版本开始,numpy.int 已经不再是一个有效的属性,因为 NumPy 不再推荐使用…

五、基于KubeAdm搭建多节点K8S集群

如需查阅上一步骤,请点击下面链接:四、戴尔R630本地服务器Linux Centos7.9系统安装docker-ce-20.10.10-3.el7版本-CSDN博客文章浏览阅读727次,点赞12次,收藏13次。1、准备工作3、Linux Centos7.9系统的iDRAC远程管理、网络设置、SecureCRT远程登录终端、企业级静态ip地址配…

20240329-科技咨询:比亚迪第五代DMi;央视AI《周处除三害》;带屏幕苹果耳机爆火

一、比亚迪5月份即将推出第五代DMi技术 近日,比亚迪举行了2023年财报投资人沟通会。会议纪要显示,比亚迪董事长王传福在会上透露,今年5月将推出第五代DMI混动技术,预计馈电油耗将降至2.9升/百公里,而满油满电续航将达…

第十四届蓝桥杯省赛C++ C组所有题目以及题解(C++)【编程题均通过100%测试数据】

第一题《求和》【简单模拟】 【问题描述】 求1(含)至20230408(含)中每个数的和。 【答案提交】 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数&…

“地干天知”干旱监测与预警技术研讨及系统产品发布

3月28日,由国家气候中心气象灾害风险管理室、北京慧天卓特科技有限公司主办的“地干天知”干旱监测与预警技术研讨及系统产品发布活动在北京市海淀区中关村壹号隆重举办。活动旨在面向公众讲解干旱监测与预警技术原理,展示监测范围和预警能力。来自国家气…

protobuf学习笔记(二):结合grpc生成客户端和服务端

上一篇文章大概讲了如何将自定义的protobuf类型的message转换成相应的go文件,这次就结合grpc写一个比较认真的客户端和服务器端例子 一、项目结构 client存放rpc服务的客户端文件 server存放rpc服务的服务端文件 protobuf存放自定义的proto文件 grpc存放生成的g…

【LeetCode: 面试题 16.05. 阶乘尾数 + 阶乘】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

ThreadPool-线程池使用及原理

1. 线程池使用方式 示例代码: // 一池N线程 Executors.newFixedThreadPool(int) // 一个任务一个任务执行,一池一线程 Executors.newSingleThreadExecutorO // 线程池根据需求创建线程,可扩容,遇强则强 Executors.newCachedThre…

谷歌seo站内优化需要做什么?

说一个比较重要的点,那就是页面的标签优化,网站的title标签跟Descriptions标签的重要性不言而喻,但其他页面的标签也是同样重要,毕竟客户看见在谷歌搜索引擎里看见的就是你的页面标题以及描述 所以页面的标题以及描述是很重要的&a…

电机试验平台的结构

电机试验平台的结构通常包括以下部分: 1.电机:试验平台主要是为了对电机进行各种试验,因此电机是平台的核心组成部分。电机通常由定子和转子组成,根据试验需要可以是直流电机、交流电机或者是特殊类型的电机。 2.控制系统&#…

一次性了解C语言中文件和文件操作

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 文件及文件操作 前言1. 文件分类1.1 文本文件1.2 二进制文件1.3 文本文件和二进制文件的区别 2…

Linux:程序地址空间详解

目录 一、堆、栈、环境参数所在位置 二、进程地址空间底层实现原理 ​编辑 三、什么是地址空间 四、为什么要有进程地址空间 五、细谈写实拷贝的实现及意义 在C/C学习中,都学习过如上图所示的一套存储结构,我们大致知道一般存储空间分为堆区&#…

数据结构:归并排序

归并排序 时间复杂度O(N*logN) 如果两个序列有序,通过归并,可以让两个序列合并后也有序,变成一个有序的新数组 对于一个数组,如果他的左右区间都有序,就可以进行归并了 归并的方法 将数组的左右两个有序区间比较,每次都取出一个最小的,然后放入临时数组(不能在原数组上修改…