4. Python基础速览¶
Python是一门简单易学且功能强大的编程语言,本章将简单浏览下Python的基础语法,详细可以看参考文档。
4.1. 注释¶
Python中单行注释以 #
开头,多行可以用多个 #
号,还有 '''
和 """
,例如:
1 2 3 4 5 6 7 8 9 10 | # 这是注释
'''
这也是注释
'''
"""
这还是注释
"""
print ("Hello!")
|
4.2. 缩进¶
python是使用缩进来表示代码块,缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数,否则会导致运行错误。实例如下:
1 2 3 4 5 6 7 8 9 10 11 12 | #for循环
for i in range(5):
print("in")
print("out")
# 输出结果
in
in
in
in
in
out
|
4.3. 变量和数据类型¶
Python中的变量和变量类型不需要声明,是动态的,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建,而变量的类型由赋予它的值来决定。例如:
1 2 3 4 5 6 | a = 10 # 整型变量
print(type(a))
a = 10.0 # 浮点型变量
print(type(a))
a = "test" # 字符串
print(type(a))
|
1 2 3 4 | # 输出
<class 'int'>
<class 'float'>
<class 'str'>
|
Python中常见几种标准数据类型: 不可变数据:Number(数字)、String(字符串)、Tuple(元组); 可变数据:List(列表)、Dictionary(字典)、Set(集合)。下面简单列举几种:
4.3.1. String(字符串)¶
Python中的字符串(无字符类型)用单引号 ''
或双引号 ""
括起来,一些特殊字符使用反斜杠 \
转义。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #!/usr/bin/python3
str0 = 'Python'
'''
字符串索引和截取
+---+---+---+---+---+---+
| P | y | t | h | o | n |
+---+---+---+---+---+---+
0 1 2 3 4 5 (从前面开始索引)
-6 -5 -4 -3 -2 -1 (从后面开始索引)
: 1 2 3 4 5 : (从前面开始截取)
: -5 -4 -3 -2 -1 : (从后面开始截取)
'''
print (str0) # 输出整个str0字符串
print (str0[0]) # 输出字符串第一个字符
print (str0[-6]) # 输出字符串第一个字符
print (str0[:]) # 整个str0字符串
print (str0[2:]) # 输出从第三个开始后的所有字符
print (str0[:-2]) # 输出从第一个到第四个所有字符
print (str0 * 2) # 输出字符串两次,也可以写成 print (2 * str0)
print (str0 + "TEST") # 连接字符串
|
字符串可以被索引或者截取,但是索引是不可以修改,重新赋值等。
4.3.2. List(列表)¶
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号 [ ]
之间、用逗号分隔开的元素列表。与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,依此类推。
1 2 3 4 5 6 7 8 9 10 11 | #!/usr/bin/python3
list0 = [ 'python', "test", 10, 10.0 ]
list1 = [ 123, 'Python' ]
print (list0) # 输出完整列表
print (list0[0]) # 输出列表第一个元素
print (list[1:3]) # 从第二个开始输出到第三个元素
print (list[2:]) # 输出从第三个元素开始的所有元素
print (tinylist * 2) # 输出两次列表
print (list0 + list1) # 连接列表
|
4.3.3. Tuple(元组)¶
Python的元组与列表类似,不同之处在于元组的元素不能修改。 元组使用小括号 ( ),列表使用方括号 [ ]。 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
使用举例:
1 2 3 4 5 6 7 | #!/usr/bin/python3
tup1 = ('Pyrhon', 'Test', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print ("tup1[0]: ", tup1[0])
print ("tup2[1:4]: ", tup2[1:5])
|
4.4. 流程控制相关¶
4.4.1. 条件控制¶
Python条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/usr/bin/python3
# 数字猜谜游戏
number = 20
guess = 0
print("数字猜谜游戏!")
while guess != number:
guess = int(input("请输入你猜的数字(0-100):"))
if guess == number:
print("恭喜,你猜对了!")
elif guess < number:
print("猜的数字小了...")
elif guess > number:
print("猜的数字大了...")
|
4.4.2. 循环语句¶
Python中的循环语句有 for和while。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/usr/bin/env python3
# 使用while求和
n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print("1 到 %d 之和为: %d" % (n,sum))
# 内置range()函数。它会生成数列
for i in range(4):
print(i)
|
4.4.3. 迭代¶
迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
例如:
1 2 3 4 5 6 | #!/usr/bin/python3
list=[1,2,3,4]
it = iter(list) # 创建迭代器对象,for语句进行遍历
for x in it:
print (x, end=" ")
|
4.5. 函数¶
函数能提高应用的模块性,和代码的重复利用率。Python提供了许多内建函数,比如print(),也可以用户自定义函数。
在Python中,使用 def
关键字定义函数,一般格式如下:
- def 函数名(参数列表):
函数体
使用举例:
1 2 3 4 5 6 7 | #!/usr/bin/python3
# 定义函数my_function
def my_function(test):
print("Hello!"+ test)
# 使用函数my_function
my_function(' Python')
|
4.6. 模块和包¶
4.6.1. 模块¶
Python提供了一个方法可以从文件中获取定义,在脚本或者解释器的一个交互式实例中使用。这样的文件被称为模块;模块中的定义可以导入到另一个模块或主模块中,使用import语句导入。
例如:
1 2 3 4 5 6 7 8 | #!/usr/bin/python3
# 使用python标准模块: sys,使用import语句
import sys
print('\nPython 环境路径:', sys.path)
#使用from … import 语句
from periphery import I2C
|
4.6.2. 包¶
包是一种管理Python模块命名空间的形式,采用”点模块名称”。
比如一个模块的名称是A.B,那么他表示一个包A中的子模块B。 就好像使用模块的时候,你不用担心不同模块之间的全局变量相互影响一样,采用点模块名称这种形式也不用担心不同库之间的模块重名的情况。
包的安装下载可以参考下前面 安装python
章节。
4.7. 虚拟环境¶
Python应用程序通常会使用不属于标准库包和模块,有时会需要特定版本的包或者模块,因为应用程序可能需要修复特定错误,或者应用程序使用的库接口是以前版本。 例如:如果应用程序A需要模块的版本1.0,而应用程序B需要版本2.0,则这些需求发生冲突,安装版本1.0或2.0将导致一个应用程序无法运行,这个问题可以通过创建一个虚拟环境来解决。
虚拟环境会创建一个自包含的目录树,其中包含用于特定版本Python的Python安装,以及许多附加包。不同的应用程序可以使用不同的虚拟环境,安装不同版本的包和模块。
Python 从3.3版本开始,自带了一个虚拟环境venv,安装venv使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | # 安装虚拟环境
cat@lubancat:~$ sudo apt-get install python3-venv
# 创建并进入project-test目录,然后创建一个独立的Python运行环境:test_env
cat@lubancat:~$ mkdir project-test && cd project-test
cat@lubancat:~/project-test$ python3 -m venv .test_env
cat@lubancat:~/project-test$ ls -al
total 12
drwxr-xr-x 3 cat cat 4096 Dec 7 10:38 .
drwxr-xr-x 17 cat cat 4096 Dec 7 10:38 ..
drwxr-xr-x 6 cat cat 4096 Dec 7 10:38 .test_env
cat@lubancat:~/project-test$
# 激活进入环境
cat@lubancat:~/project-test$ source .test_env/bin/activate
(.test_env) cat@lubancat:~/project-test$
(.test_env) cat@lubancat:~/project-test$ pip list
Package Version
------------- -------
pip 18.1
pkg-resources 0.0.0
setuptools 40.8.0
(.test_env) cat@lubancat:~/project-test$
# 导出当前虚拟环境的包和模块版本号
(.test_env) cat@lubancat:~/project-test$ pip3 freeze > requirements.txt
# 安装需求的包和模块版本号
(.test_env) cat@lubancat:~/project-test$ pip3 install -r requirements.txt
# 退出环境
(.test_env) cat@lubancat:~/project-test$ deactivate
cat@lubancat:~/project-test$
|
更多虚拟环境相关知识,可以搜索下virtualenv, venv和pipenv关键字。