python 引入同一路径的类_python基础 | 语法常识

150c0eb2935a4c8046ead6e8b109b5b5.png

014b9c4a9e087d69c7f5723460e79eb6.png

f56e543492f24071f68b716e531a5415.png

图|源自网络

文|一张顾巷

初识交互式编程、脚本式编程

//交互式编程// 交互式编程 不需要创建脚本文件 ,通过 Python 解释器的交互模式即可编写代码。 Window 上在安装 Python 时已经安装了交互式编程客户端,提示窗口如下:

5e9848e95efa42003e284caf0e98be6b.png

在 python 提示符中输入文本“Hello, Python!”,然后按 Enter 键即可查看运行效果:

>>> print ("Hello, Python!")

,以上实例输出结果如下:

Hello, Python!
//脚本式编程//

脚本式编程是通过脚本参数调用解释器执行脚本。所有 Python 文件将以 .py 为扩展名。

让我们写一个简单的 Python 脚本程序。将上文中的print(“Hello, Python!”)拷贝至 test.py 文件中。

假设你已经按第一篇中的步骤,正确设置了 Python 解释器 PATH 变量。使用以下命令运行程序:

$ python test.py

输出结果:

Hello, Python!

基础语法

//标识符及命名规则//
  • 标识符只可由字母、数字、下划线组成。但不能以数字开头。

  • 标识符区分大小写。

  • 命名不能占用python关键字

可以通过keyword模块的 kwlist 函数 查询所有关键字,代码如下:
import keywordprint(keyword.kwlist)

以下划线开头的标识符是有特殊意义的。

以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。

以双下划线开头的 _foo  代表类的私有成员,以双下划线开头和结尾的 _foo 代表 Python 里特殊方法专用的标识,如 __init__()代表类的构造函数。

//命令行参数//

很多程序可以执行一些操作来查看一些基本信息,Python 可以使用 -h 参数查看各参数帮助信息:

$ python -h 
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... Options and arguments (and corresponding environment variables): -c cmd : program passed in as string (terminates option list) -d : debug output from parser (also PYTHONDEBUG=x) -E : ignore environment variables (such as PYTHONPATH) -h : print this help message and exit [ etc. ]

我们在使用脚本形式执行 Python 时,可以接收命令行输入的参数,具体使用可以参照 Python 命令行参数。

//行&缩进// Python不像其他编程语言,可以通过大括号{}来对代码块进行划分,只能通过 缩进 来对 语句 进行 分组 ,所谓的缩进就是每行代码前的 空白间隙 。 相同的空白间隙表示这些语句处于同一个层级,所以正确的缩进就显得非常重要,建议使用 Tab来进行缩进。 此外,如果你想 多个语句写到同一行, 可以使用; 分号 进行分隔。 有时 语句太长 ,你还可以使用 \反斜杠 来衔接,而在 []{}()里分行不需要反斜杠衔接!

注释与模块

//注释//
注释是一段 「解释性」文本,程序运行时,会跳过不做处理,一般是对代码的解释或提示,以此提高代码的可读性。写注释既方便了别人阅读代码,也方便自己日后回顾,而不用苦思冥想当初写这段代码的目的。当然注释也不是写的越多越好,应 尽量避免没用的注释或写过多的废话
Python中提供了两种注释方式:「 单行注释 」和「 多行注释 」,单行注释通过#进行标识,多行注释则通过 两个三引号 来标识,代码示例如下:
# 一个单行注释
"""多行注释示例"""
//模块//
  • 模块的基本使用
模块其实就是一个Python文件,以 .py结尾,包含了Python定义和声明。

举个简单例子,你可以把 常用的代码块抽取出来 放到一个单独的py文件中,然后在用到的地方对自己的模块进行引用,模块引用示例如下:

# 导入整个模块import sys# 导入模块中的需要用到的部分from sys import argv# 多个的时候可以用逗号隔开from urllib.error import URLError, HTTPError# 导入模块中所有不是以下划线开头的名字,不建议这样做,如果同名会覆盖# 定义过的名字;如果你硬想用这种导入方式,可以添加__all__成员来进行约束# 比如:__all__ = ['a','b']from sys import *

另外,在导入自己的模块时,可能遇到这个问题:写在模块里的测试代码都执行了???

可以通过内置属性  __name__  来区分,当此模块作为程序运行时, 会等于 __main__ , 而作为一个模块导入到其他程序,值则 等于文件名字 (去掉.py)。 所以可以通过判断: __name__ 是否 等于  __main__  来决定测试代码是否执行。示例如下:
if __name__ == '__main__':    test()
  • 模块的搜索路径与顺序
可以通过打印  sys.path  来查看模块的搜索路径。 模块的搜索顺序程序所在目录→标准安装目录→标准库安装目录→Python环境变量所包含的目录 所以,如果自定义的模块与内置模块重名的话,会调用自定义模块而非内置的模块,因此在命名模块时应尽量 避免重名 。如果硬是要同名且两个模块都用到,可以使用 完整路径引入 ,并使用 as关键字 为模块 设置别名 。 此外,如果你的模块都不在这些搜索路径里的话,可以通过调用sys.path.append("路径") 临时把路径添加到搜索路径中。
  • 重复导入一个模块后会怎样
第一次导入后就将模块名加载到内存中,后续的import只是对已加载到内存中的 模块对象增加一次引用, 不会重新执行模块里的语句
  • __init__.py文件的作用
标识文件所在的目录是一个 python的模块包(package) ,一般是空文件,当然你也可以加点东西来控制包的导入行为,直接在__init__.py 文件中批量导入所需模块,而不用一个个导入,除此之外,还可以将一些初始化代码放入其中。
  • 模块的重载
上面说了重复导入模块,只是新增一个引用,而不会重新导入。有时可能需要在同一个会话中去更新模块,可以通过  imp标准库中的reload函数  来完成。
from imp import reloadreload(模块名)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值