Python学习(一)基础语法

一、学习网站

廖雪峰 Python入门 慕课网:点击打开

二、安装

1、python安装:

脚本解释型语言。
Windows下安装 www.python.org 下载 安装。

2、python注意:

跨平台运行(Windows Linux mac),2.7版和3.3版不兼容。
python对缩进要求很严格,首行不能有空格开头。
代码页最顶部要加一句 #coding=utf-8 确保能显示中文。

3、伴随一生

三个内置必须用熟练:type(),help(),dir()。

4、python2.x 和python3.x 版本区别

具体点击链接查看:点击阅读

三、基础知识

1、数据类型

a、整数

python 可以处理任意大小的整数,包括负整数,整数的表示方法和数学上的写法一样,如1,100,-800等;

b、浮点数

即小数,整数运算永远是精确的,浮点数运算可能会有四舍五入的误差。

c、字符串

字符串以 """"包裹起来的任意文本, """"只是一种表示方式,不是字符串的一部分。

d、布尔值

只有TrueFalse ,布尔值和布尔代数的表示一致,并且不而且可以通过布尔运算计算出来,如使用 and 、or 、和not 运算。
and运算和与运算,只有所有都为Trueand运算的结果才是True;
or运算是或运算,只要其中有一个为Trueor运算结果就是True;
not运算是非运算,他是一个单目运算,把True变成False,把False变成True;

e、空值

空值是python中一个特殊值,用None表示,None不能理解为0,因为0有意义,而None是一个特殊的空值。

2、print语句

语法 :print "hello,world!"
注意 :
1、print输出多个字符串,要用逗号“,”隔开,连成一串输出。并且遇到逗号,会输出成一个空格。

1
2
print "hello","leo","cool~"
//hello leo cool~

3、注释语句

程序运行时,python解释器会直接忽略掉注释,所以注释不会影响程序的执行结果,只是会影响别人会不会看得懂你的代码。

a、单行注释

1
2
3
4
# 这一行全是注释   
print "hello" # 从这里开始也是注释
# 也可以用在注释代码
# print "hello"

b、多行注释

1
2
3
4
5
6
7
def fun():
"""
注释1
注释2
注释3
"""
return "hello"

4、变量

变量的概念基本和初中代数的方程变量一致。
在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头,如:

1
2
a = 1 ;        # a是一个整数
t_01 = "T01" ; # t_01是一个字符串

python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同数据类型的变量,如:

1
2
3
4
a = 123;       # a是整数  
print a;
a = "leo"; # a是字符串
print a;

这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言

静态语言在定义变量时必须指定变量类型,如果赋值时类型不匹配,则报错。例如Java就是静态语言,赋值语句如下(//表示注释)

1
2
int a = 123;   # a是整数类型变量  
a = "hello"; # 报错:不能把字符串赋值给整型变量

动态语言如:javascript
当我们写 a = "ABC" 时,Python解释器做了两件事:
第一,在内存中创建了 "ABC" 的字符串;
第二,在内存中创建了 a 的变量,并且指向 "ABC"
若把变量a赋值给变量b,则实际是把变量b指向变量a的数据,如下:

1
2
3
4
a == "ABC";
b == a;
a = "XYZ";
print b; # 打印出"ABC"

5、定义字符串

如果本身包含 " ,则可以用 "" 包裹起来表示,反之也可以,如:

1
2
3
4
5
6
7
8
"I"m leo!";
"Leo name "pingan"!"
# 如果即有 " 又有 ",则可以用转义字符 \ 进行转移:
"good boy \"I\"m leo \"."
注意:转义字符不计入字符串内容,常用的还有:
\t # 表示一个制表符;
\n # 表示换行
\\ # 表示 \ 字符本身

6、字符串和多行字符串

如果一个字符串含很多需要转义的字符,则每个转义会很麻烦,我们可以在字符串前面添加前缀 r ,表示这是一个 raw 字符串,里面字符不用转义了,如:

1
r"\(~_~)/\(~_~)/"

但是:r"..." 不能表示多行字符串,也不能表示包含 "" 的字符串。
表示多行字符串可以使用 """...""" 表示:

1
2
3
4
5
"""Line1
line2
line3"""
# 完全等价于
"Line1\nLine2\nLine3"

还可以在多行字符串前面添加 r ,把多行字符串也变成一个 raw 字符串:

1
2
3
r""" my name is "leo"
so cool.
Let"s go! """

7、Unicode字符串

由于计算机只能处理数字,如需处理文本,需要转换成数字才能处理。
ASCII编码:0-255用来标识大小写英文字母、数字和一些符号。如:字母A的编码是65,小写字母z的编码是122
GB2312编码:包含中文编码。
Unicode编码:把所有语言统一到一套编码,这样就不会在有乱码问题。通常采用两个字节表示一个字符,原因有的英文编码从单字节变成双字节,只需把高字节全部填为0就可以。
在python中,以 Unicode 表示的字符串用 u"..." 表示,比如:

1
print u"中文";  # 中文

注意,不加 u".." 中文就不能正常显示。
Unicode字符串只是多了个 u ,与普通字符串相同,转义字符和多行表示法仍然有效:

1
2
3
4
5
6
u"中文\n日文\n韩文"        #  转义
u"""第一行 # 多行
第二行"""
ur"""Python的Unicode字符串支持"中文", # raw + 多行
"日文",
"韩文"等多种语言"""

如果中文字符串在python环境下遇到 UnicodeDecodeError ,这是因为 .py 文件保存格式有问题,只需在第一样添加注释

1
# -*- coding: utf-8 -*-

目的是告诉python解释器采用 UTF-8编码 读取源代码。

8、整数和浮点数

支持对整数和浮点数直接四则混合运算,运算规则和数学一致。
基本运算:

1
2
3
4
5
6
1 + 2 + 3       # 6
4 * 5 - 6 # 14
7.5 / 8 + 2.1 # 3.0375
# 括号优先运算
( 1 + 2 ) * 3 # 9
( 2.2 + 3.3 ) / ( 1.5 * ( 9 - 0.3 )) # 0.42145593869731807

整数和整数运算 浮点数和浮点数

1
2
1 + 2           # 整数 3
1.0 + 2.0 # 浮点数 3.0

整数和浮点数

1
2
3
4
5
6
7
8
1 + 2.0         # 3.0
因为:整数计算精确,浮点数计算不一定精确
# python中 整数除法,如果除不尽,结果仍是整数,余数直接扔掉:
11 / 4 # 2
# 但是python提供求余运算 % 计算:
11 % 4 # 3
# 如果要取得精确值,则需要把其中一个数值变成浮点数:
11.0 / 4 # 2.75

注意:整数和整数运算,结果只保留整数,如果需要取得精确值,则需要把其中一个数值变成浮点数。
按照“整数和浮点数混合运算的结果是浮点数”的法则

9、布尔类型

与运算:只有两个都是True,计算结果才是True

1
2
3
4
True and True       # ==> True
True and False # ==> False
False and True # ==> False
False and False # ==> False

或运算:只要有一个是True,计算结果就是True

1
2
3
4
True or True        # ==> True
True or False # ==> True
False or True # ==> True
False or False # ==> False

非运算:把True变成False,把False变成True

1
2
not True            # ==> False
not False # ==> True

注意:python把 0空字符串 ""none 看成False ,其他数值和非空字符串看成true

1
2
True and "a=T"      # "a=T"
"a=T" or "a=F" # "a=T"

这涉及到 andor 运算的一条重要法则:短路计算。

1
2
3
4
5
6
1. 计算 a and b 时,
如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;
如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。
2. 计算 a or b 时,
如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;
如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。

所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。