前言
闲来无事,开启Python学习之旅!我分为以下几部分进行学习:
开发工具、基本语法、流程控制、序列的应用(列表、元组、字典、集合、字符串)、字符串及正则表达式、函数、面向对象程序设计、模块、异常处理及程序调试、文件及目录操作、操作数据库、脚本学习、GUI界面编程、网络爬虫、Web框架。
本篇包含:开发工具、基本语法、流程控制
一、Python开发工具
1、自带的IDLE
2、常用的第三方开发工具:PyCharm、Visual Studio 2017、Eclipse+PyDev
3、开源的Python包管理器:Anaconda、Miniconda
自带IDLE的常用快捷键:
二、Python基本语法
1、语法特点
1.注释
(1)单行注释
# 注释内容
(2)多行注释
'''
注释形式1
注释内容
......
'''
"""
注释形式2
注释内容
......
"""
(3)中文编码声明注释
# _*_ coding:编码 _*_
#coding=编码
编码:utf-8
、gbk
2.代码缩进
一个缩进量:一个Tab或4个空格
推荐采用空格。
注:同一个级别的代码块的缩进量必须相同。如果不采用合理的代码缩进,将抛出SyntaxError异常。
3.编码规范
采用PEP 8
编码规范
每个import语句只导入一个模块,尽量避免一次导入多个模块。
不要在行尾添加分号;
,也不要用分号将两条命令放在同一行。
建议每行不超过80个字符。(可以用()
换行连接)
使用必要的空行可以增加代码的可读性。(函数和类的定义空2行,方法的定义空1行)
运算符两侧、函数参数之间、逗号,
两侧建议使用空格进行分割。
避免在循环中使用+和+=运算符累加字符串。
适当使用异常处理结构提高程序容错性。
命名规范
模块名尽量短小,并且使用全部小写字母,可以使用
_
分隔多个字母。
包名尽量短小,并且使用全部小写字母。
类名采用单词首字母大写形式(即Pascal风格)。
模块内部的类由_
+Pascal风格的类名组成。
函数、类的属性和方法名全部采用小写字母,多个字母间用_
分隔。
常量命名时采用全部大写字母,可以使用_
。
使用_
开头的模块变量或函数是受保护的。
使用__
开头的实例变量或方法是类私有的。
2、保留字与标识符
1.保留字
Python 3.6版有33个保留字(关键字),Python 3.7版本中正式引入两个新的关键字async与await,共35个关键字。保留字是区分字母大小写的。
import keyword
print(keyword.kwlist)
--- Python 3.6 Console Output ---
['False', 'None', 'True', 'and', 'as', 'assert',
'break', 'class', 'continue', 'def', 'del', 'elif',
'else', 'except', 'finally', 'for', 'from', 'global',
'if', 'import', 'in', 'is', 'lambda', 'nonlocal',
'not', 'or', 'pass', 'raise', 'return', 'try',
'while', 'with', 'yield']
--- Python 3.7 Console Output ---
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await',
'break', 'class', 'continue', 'def', 'del', 'elif',
'else', 'except', 'finally', 'for', 'from', 'global',
'if', 'import', 'in', 'is', 'lambda', 'nonlocal',
'not', 'or', 'pass', 'raise', 'return', 'try',
'while', 'with', 'yield']
2.标识符_标识符
保护变量__标识符
类的私有成员__标识符__
专用标识(如:__init__()
构造函数)
3、变量
不需要提前声明,直接赋值使用即可type()
可以查看变量类型id()
可以获取变量的内存地址
>>> name = "qwzf"
>>> print(name)
qwzf
>>> age = 20
>>> print(age)
20
>>> type(name)
<class 'str'>
>>> type(age)
<class 'int'>
多个变量指向同一个值时,在内存中就只存在一个值。
>>> num = count = 1024
>>> print(num)
1024
>>> print(count)
1024
>>> id(num)
2179811900336
>>> id(count)
2179811900336
>>>
变量命名规则:
必须是一个有效的标识符
选择有意义的单词
不能使用Python中的保留字
慎用小写字母l
和大写字母O
4、基本数据类型
基本数据类型有:数字类型、字符串类型、布尔类型
1.数字类型
数字类型:整数、浮点数、复数
浮点数计算时,可能会出现小数位数不确定的情况。要用到函数round()
进行小数位数保留。
>>> 0.1+0.2
0.30000000000000004
>>> round(0.1+0.2,1)
0.3
>>>
2.字符串类型
使用单引号和双引号,内容必须写在一行上;使用三引号,内容可以分多行写。
text1 = '学习Pyhon' #使用单引号
text2 = "学习编程" #使用双引号
text3 = '''继续学习中,
请勿打扰''' #使用三引号
字符串类型,有时会用到转义字符\
3.布尔类型
假值:
(1)False或None
(2)0、0.0、虚数0
(3)空序列(空字符串、空元组、空列表、空字典)
(4)对象的__bool__
方法返回False或者__len__
方法返回0
真值:
除上述返回假值的情况外,都是返回真值
4.数据类型转换int()
强制转换成整型float()
强制转换成浮点型str()
强制转换成字符串型hex()
强制将整数转换为16进制字符串oct()
强制将整数转换为8进制字符串
>>> num = 100.25
>>> num1 = str(num)
>>> print(num1)
100.25
>>> type(num1)
<class 'str'>
>>> num2 = int(num)
>>> print(num2)
100
5、运算符
运算符包含:算术运算符、赋值运算符、比较(关系)运算符、逻辑运算符、位运算符
1.算术运算符+
、-
、*
、/
取整除://
(向下取整)
取余:%
幂次:**
2.赋值运算符
简单赋值 =
加法赋值 +=
减法赋值 -=
乘法赋值 *=
除法赋值 /=
取整除赋值 //=
取余赋值 %=
幂赋值 **=
3.比较(关系)运算符
等于 ==
不等于 !=
或 <>
(a != b 或 a <> b)
大于 >
小于 <
大于等于 >=
小于等于 <=
4.逻辑运算符
逻辑运算符返回值为true 或 false。
布尔与 and
:如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。。
布尔或 or
:如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。
布尔非 not
: 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。
5.位运算符
位运算过程中,把数字转化成二进制计算,然后再转化成数字。
按位与 &
:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。
按位或 |
:参与运算的两个值, 只要有一个位置为1,则该位的结果为1。
按位异或 ^
:参与运算的两个值,如果两个相应位数值不同,则结果为1,若相同,则结果为0.
按位取反 ~
:对数据的每个二进制位取反,即把1变为0,把0变为1 。
左移位 <<
:若 a << 2 将数字a对应的二进制数集体向左移动2位,后面空余的2位补零。
(例:原a二进制:0011 1100, a << 2 ,得 1111 0000,加黑为补零位。)
右移位 >>
:若 a >> 3 将数字a对应的二进制数集体向右移动2位,前面空余的2位补零。
(例:原a二进制:0011 1100, a >> 2 ,得 0000 1111,加黑为补零位。)
6.成员运算符
检测 x 是否在 y 的序列中。in
:若 x 在 y 的序列中,则返回True,否则返回False。not in
:若 x 不在 y 的序列中,则返回True,否则返回False。
7.身份运算符
用于比较两个对象 A 和 B 的存储单元是否一致,即判断两个标识符 A 和 B 是不是引用自一个对象。is
: x is y
, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False。 # id() 函数用于获取对象内存地址。is not
: x is not y
, 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。 # id() 函数用于获取对象内存地址。
8.运算符的优先级
6、基本输入和输出
1.input()函数输入
input()函数返回值是字符串类型
variable = input("提示文字")
返回值类型转换
>>> tips = input("请输入内容:")
请输入内容:123
>>> print(tips,type(tips))
123 <class 'str'>
>>> hints = int(input("请输入内容:"))
请输入内容:456
>>> print(hints,type(hints))
456 <class 'int'>
2.print()函数输出
print(输出内容)
a = 6
b = 111
print("数字:",666)
print("表达式:",a*b)
print("字符串:","努力吧!!")
输出到文件
fp = open(r'D:\demo.txt','a+')
print("加油!奥利给!!",file = fp)
fp.close()
在一行输出
for i in range(1,10):
print(i,end=' ')
三、流程控制
1、选择语句
1.简单的if语句
if 表达式:
语句块
2.if…else语句
if 表达式:
语句块1
else:
语句块2
3.if…elif…else语句
if 表达式1:
语句块1
elif 表达式2:
语句块2
......
else:
语句块n
如果已经定义一个布尔变量flag,if语句应写成以下形式:
if flag:
if not flag:
下面这种形式是不规范的:
if flag == True:(X)
4.if语句的嵌套
if 表达式1:
if 表达式2:
语句块2
else:
语句块3
else:
语句块1
2、条件表达式
好处:使代码简洁;可以有一个返回值
结果1 if 表达式 else 结果2
表达式为真,返回结果1;表达式为假,返回结果2
通常把结果赋值给一个变量
#求两个数的最大值
a = 10
b = 20
r = a if a>b else b
print(r)
#求一个数的绝对值
x = -10
y = x if a>0 else -x
3、循环语句
1.while循环
一直重复,直到条件不满足时,才停止
while 条件表达式:
循环体
2.for循环
重复一定次数,通常用于迭代、枚举或遍历
for 迭代变量 in 对象:
循环体
循环数值
#计算1+2+...+100的和
result = 0 #保存累加结果的变量
for i in range(101):
result += i #实现累加
print(result)
遍历字符串
string = '努力不一定成功'
for ch in string:
print(ch)
range()函数:生成一系列连续的整数range(start,end,step)
start
: 计数从start开始。默认是从 0 开始。例如:range(5)等价于range(0,5)end
: 计数到end结束,但不包括 stop。例如:range(0,5)是[0, 1, 2, 3, 4]没有5step
:步长,默认为1。例如:range(0,5)等价于range(0,5,1)
range()函数替换Python2中的xrange()函数
3.循环嵌套
while 条件表达式1:
while 条件表达式2:
循环体2
循环体1
while 条件表达式:
for 迭代变量 in 对象:
循环体2
循环体1
for 迭代变量 in 对象:
while 条件表达式:
循环体2
循环体1
等等
4、跳转语句
1.break语句
完全跳出循环
2.continue语句
只跳出一次循环,然后继续下一次循环
5、pass空语句
pass语句,表示空语句。它不做任何事情,一般起到占位作用。
通常用于流程控制语句、函数、类中。
for i in range(1,10):
if i%2 == 0:
print(i,end=',') #输出偶数
else:
pass #占位,不做任何事
后记
学习完Python的开发工具、基本语法、流程控制,对Python的一些语法有了一些认识。
收获之处:学习了流程控制中条件表达式和for循环的使用。同时注意到Python中没有do…while循环。
继续学习@_@