Python学习-基础篇(一)

前言

闲来无事,开启Python学习之旅!我分为以下几部分进行学习:
开发工具、基本语法、流程控制、序列的应用(列表、元组、字典、集合、字符串)、字符串及正则表达式、函数、面向对象程序设计、模块、异常处理及程序调试、文件及目录操作、操作数据库、网络爬虫、脚本编写、Web框架。
本篇包含:开发工具、基本语法、流程控制

一、Python开发工具

1、自带的IDLE
2、常用的第三方开发工具:PyCharm、Anaconda、Visual Studio 2017、Eclipse+PyDev
自带IDLE的常用快捷键:
在这里插入图片描述

二、Python基本语法

1、语法特点

1.注释
(1)单行注释

# 注释内容

(2)多行注释

'''
注释形式1
注释内容
......
'''
"""
注释形式2
注释内容
......
"""

(3)中文编码声明注释

# _*_ coding:编码 _*_
#coding=编码

编码:utf-8gbk
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 是不是引用自一个对象。
isx is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False。 # id() 函数用于获取对象内存地址。
is notx 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]没有5
step:步长,默认为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循环。
继续学习@_@


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 qwzf1024@qq.com

×

喜欢就点赞,疼爱就打赏