知识内容:
1.三元运算表达式
2.python代码编写规范
3.模块导入与使用
4.python文件名
5.python脚本的"__name__"属性
6.python之禅
一、三元运算表达式
result = 值1 if 条件 else 值2
如果条件为真:result = 值1
如果条件为假:result = 值2
result = 1 if 1 == 2 else 0
print(result) # result: 0
二、python代码编写规范
1、缩进
python程序是依靠代码块的缩进来体现代码之间的逻辑的。对于类定义、函数定义、选择结构、循环结构以及异常处理结构来说,行尾的冒号以及下一行的缩进表示一个代码块的开始,而缩进结束则表示一个代码块的结束,这些将在后面具体代码中可以体现出来
在python中一个缩进是四个空格,在pycharm中可以直接打一个tab键,编辑器会自动把一个tab键转换成四个空格,但是Linux中的vim就不行,在vim中表示python的缩进时,一定要使用四个空格!当然vim也可以自己去配置使一个tab键等同于四个空格!
示例:
# __author__ = "wyb"
# date: 2018/3/8 # 以下代码功能: 找出a, b, c 3者中最大值
a, b, c = 1, 2, 3
if a > b:
if a > c:
print(a)
else:
print(c) else:
if b > c:
print(b)
else:
print(c)
print('OK')
2.注释
python中常见的注释有两种:
(1)以#开头对一行内容进行注释
(2)包含在一对三引号中(''' 注释的内容 '''或""" 注释的内容 """)
注: 在pycharm注释的快捷键是ctrl+/,使用方法是先选中所需注释的内容,然后敲上ctrl+/
# 被注释的内容 '''
被注释的内容
多行
多行
''' """ 被注释的内容
多行
多行 """
3.使用必要的空格和空行增强代码的可读性
(1)运算符两侧、函数参数之间建议使用空格进行分割
(2)不同功能的代码块之间、不同的函数定义之间以及不同的类定义之间建议使用两个空行
4.异常处理
适当使用异常处理结构增强程序容错性和健壮性,但是不能过多地依赖异常处理结构,程序需要有适当的显性判断逻辑
5.测试
程序需有较强的测试性,测试与开发应该齐头并进,做完一个功能后程序员自己应该进行相应的单元测试
三、模块导入与使用
1.import 模块名 [ as 别名]
使用这种方式导入模块后如要使用模块中的对象可以使用以下方法: 模块名(别名).对象名\
2.from 模块名 import 对象名[ as 别名]
3. 导入一个模块中的所有对象: from 模块名 import *
注: 不推荐使用
4.导入模块的顺序
(1) 导入python标准库中的模块(python环境自带模块),比如说os\sys\re\math
(2) 导入第三方库模块,比如说numpy\scrapy
(3) 导入自己定义或者开发的本地模块
示例:
# __author__ = "wyb"
# date: 2018/3/9 import os # 导入python自带模块os
import sys # 导入python自带模块sys
import requests # 导入python第3方模块requests
# import package # 导入自己写的模块package from bs4 import BeautifulSoup # 从bs4包中导入BeautifulSoup模块
from math import sqrt # 从math模块中导入sqrt函数
四、python文件名
.py:Python源文件,由Python解释器负责解释执行
.pyw:Python源文件,常用于图形界面程序文件
.pyc:Python字节码文件,无法使用文本编辑器直接查看该类型文件内容,可用于隐藏Python源代码和提高运行速度。对于Python模块,第一次被导入时将被编译成字节码的形式,并在以后再次导入时优先使用“.pyc”文件,以提高模块的加载和运行速度。对于非模块文件,直接执行时并不生成“.pyc”文件,但可以使用py_compile模块的compile()函数进行编译以提高加载和运行速度。另外,Python还提供了compileall模块,其中包含compile_dir()、compile_file()和compile_path()等方法,用来支持批量Python源程序文件的编译
.pyo:优化的Python字节码文件,同样无法使用文本编辑器直接查看其内容。可以使用“python –O -m py_compile file.py”或“python –OO -m py_compile file.py”进行优化编译。Python 3.5不再支持.pyo文件
.pyd:一般是由其他语言编写并编译的二进制文件,常用于实现某些软件工具的Python编程接口插件或Python动态链接库
五、python脚本的"__name__"属性
1."__name__"属性的值
每一个python脚本在运行时都有一个"__name__"属性。如果脚本被作为模块被导入,则其"__name__"属性的值被自动设置为模块名;如果脚本独立运行,则其"__name__"属性值就被自动设置为"__main__"
将以下代码保存为test_name.py
print(__name__)
# 直接运行该程序会输出: __main__
# 将该程序作为模块导入会输出: test_name
2.利用__name__属性
利用__name__属性可以控制python程序,比如在程序作为脚本独立运行时设置一些参数或者启动相应函数
# __author__ = "wyb"
# date: 2018/3/9 # 定义函数func:
def func():
print("程序作为脚本独立启动,不是作为模块使用") if __name__ == '__main__':
func() # 运行函数func
六、python之禅
在python交互式环境中输入import this 并回车便可以看到由Tim Peters总结的python之禅
import this # python之禅:
The Zen of Python, by Tim Peters Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!