Python基础学习
关于这篇文章
首先,这是我第一次写博客,还请大家不喜勿喷。
开始写博客还是有一些理由的。除了帮助自己复习以及便于再次查找之外,还有满足自己小小成就感的目的吧。(这个目的会不会很奇怪啊?)
关于Python
Python语言,可以说,由于人工智能的需求量大增,使得Python语言也开始火起来了。然后,对于我,由于下一个学期选了和语义分析有关的选修课,所以打算自己学一学。
Python的特点
- 高级:有高级的数据结构,缩短开发时间与代码量。
- 面向对象(不强制):为数据和结构相分离的结构化和过程化编程添加了新的活力。
- 可升级:提供了基本的开发模块,可以在它上面开发软件,实现代码的复用。
- 可扩展:通过将其分离为多个文件或者模块加以组织管理。
- 可移植:Python是用C写的,所以具有C的可移植性,使得Python可以运行在任何带有ANSI C编译器的平台上。
- 易学:关键字少,结构简单、语法清晰。
- 易读:没有其他语言通常用来访问变量、定义代码块和进行模式匹配的命令式符号。
- 内存管理器:内存管理是由Python解释器负责的。
Python的安装与配置
需要:
- Python解释器
- 配置环境变量
查看Python的版本号
python -V
python --version
指定解释器
我们可以在Python程序首行加入这样的语句,这样Python程序就既可以使用文件方式直接执行,也可以用交互解释器(python + 文件名)的方式执行了。
#!/usr/bin/env python
由于不能确定具体位置,所以我们使用env帮助我们寻找Python。
使Python支持TAB自动补全功能
方法一:
import readline
import rlcompleter
readline.parse_and_bind('tab:complete')
但是,这种方法每次都需要输入
方法二:使用环境变量
将以下代码保存
#!/usr/bin/env python
import readline, rlcompleter
readline.parse_and_bind('tab:complete')
并设置环境变量PYTHONSTARTUP到bashrc之中。
Python 基础语法
编码
在默认的情况之下,Python 3的源代码将会使用UTF-8编码,也就是说,使用Unicode字符串。
我们一般使用以下方式指定编码方式:
# -*- coding: utf-8 -*-
当然,也可以使用其他编码,比如:
# -*- coding: cp-1252 -*-
注释
# A comment, this is so you can read your program later.
# Anything after the # is ignored by python.
print("I could have code like this.") # and the comment after is ignored
# You can also use a comment to "disable" or comment out code:
# print("This won't run.")
print("This will run.")
- 单行注释:使用“#”进行注释。
- 多行注释:使用连续的三个单引号(’’’)或者多引号进行注释(""")。
演示如下:
#单行注释
'''
使用三个单引号的多行注释
为了表示这个是多行的,我们多写几行
'''
"""
使用三个双引号的多行注释
同样,为了表示这个是多行的,我们多写几行
"""
输入与输出
输出
注意:实际上,单引号和双引号可以通用的原因就是为了尽量地避免转义字符,希望能够做到“所见即所得”,从而避免一些错误,同时提升其美观性。
- 赤裸裸的直接输出
print("Hellos World!")
print("Hello Again")
print("I like typing this.")
print("This is fun.")
print('Yay! Printing')
print("I'd much rather you 'not'.")
print('I "said" do not touch this.')
数字和数学计算
这里需要特别注意的是:Python是一种弱类型的脚本语言,它没有长短的限制(对于大数的存储与计算还是很方便的)。
print("I will now count my chickens:")
print("Hens", 25 + 30 / 6) # 除法计算将自动进行类型装换,输出的时候,会用小数表示
print("Roosters", 100 - 25 * 3 % 4) # 取模运算是不会的哟
print("Now I will count the eggs:")
print(3 + 2 + 1 -5 + 4 % 2 - 1 / 4 + 6) # 请注意运算的优先顺序
print("Is it true that 3 + 2 < 5 - 7?")
print(3 + 2 < 5 - 7) # 先算术运算,再逻辑运算。 此外,输出的时候,直接用“False”和“True”表示
print("What is 3 + 2?", 3 + 2)
print("What is 5 - 7?", 5 - 7)
print("Oh, that's why it's False.")
print("How about some more.")
print("Is it greater?", 5 > -2)
print("Is it greater or equal?", 5 >= -2)
print("Is it less or equal?", 5 <= -2)
关于优先级
最常用的还是我们所熟知的“括号 > 乘除 > 加减”,在美国,人们使用简称PEMDAS辅助记忆,即括号(Parentheses)、指数(Exponents)、乘(Multiplication)、除(Division)、加(Addition)、减(Subtraction)。不过,我们不能确定优先级的时候也挺多的,这个时候,要么查资料,要么就使用括号。
变量与命名
由于Python是一种弱类型的脚本语言,所以,类型就没有那么重要了。我们无需去手动规定变量的类型。
cars = 100 # 总共有100辆车
space_in_a_car = 4.0 # 每辆车里面有4.0个座位
drivers = 30 # 我们总共有30位司机
passengers = 90 # 同时,我们有90位乘客
cars_not_driven = cars - drivers # 所以,有多少车没有司机开呢?
cars_driven = drivers # 有多少司机就能开多少辆车
carpool_capacity = cars_driven * space_in_a_car # 载客能力
average_passengers_per_car = passengers / cars_driven # 每辆车要安排多少乘客
print("There are", cars, "cars available.")
print("There are only", drivers, "drivers available.")
print("There will be", cars_not_driven, "empty cars today.")
print("We can transport", carpool_capacity, "people today.")
print("We have", passengers, "to carpool today.")
print("We need to put about", average_passengers_per_car, "in each car.")
转义字符
没什么好说的,上表:
转义字符 | 功能 |
---|---|
\\ | 反斜杠(\) |
\’ | 单引号(’) |
\" | 双引号(") |
\a | ASCII响铃符(BEL) |
\b | ASCII退格符(BS) |
\f | ASCII进纸符(FF) |
\n | ASCII换行符(LF) |
\N{name} | Unicode数据库中的字符名,其中name是它的名字,仅Unicode适用 |
\r | ASCII回车符(CR) |
\t | ASCII水平制表符(TAB) |
\uxxxx | 值为16位十六进制值xxxx的字符 |
\Uxxxxxxxx | 值为32位十六进制值xxxxxxxx的字符 |
\v | ASCII垂直制表符(VT) |
\ooo | 值为八进制值ooo的字符 |
\xhh | 值为十六进制值hh的字符 |
未完待续