本文内容:数据类型、条件判断语句、循环语句、字符串格式化、运算符、编码、切片、深浅拷贝、代码块、小数据池、相对路径和绝对路径
数据类型:整型(int);字符串(str) ;布尔型(bool);列表(list);元祖(tuple);字典(dict);集合(set)
bool:
-
False: () ( ) ("") [] [ ] {} { } None 0
-
True: 非0 (“”,) (“ ”) [“”] [“”,] {“”} {“”,}
Python2x 和 Python3x 的区别:
- print在Python2x中不用加括号就可以,在Python3x中必须加括号
- Python3x中可以直接使用中文,因为3的编码格式是utf-8,而2x中部可以直接使用中文,需要在文件顶头配置——# -*-coding:utf-8 -*-,才可以使用,因为2x使用的是ASCII编码格式
- 2x中input()方法,用户输入的是什么类型,获得到的就是什么类型,如果想要同3x一样,就需要用到raw_input()方法;3x中的input()方法获得到的都是str类型
- 2x的源码比较混乱,各种语言进行编写,不利于后期维护;3x的源码大部分都是由Python来编写,后期维护便利
- 除法运算,Python2的除法得到的结果是一个int类型的数值,而Python3的出发得到的结果是一个floor类型的数值,带小数点的
- Python2中xrange对象等同于 Python3中的range 对象,如果直接print(range(0,10)),则输出结果是 range(0,10)..但是在Python2中的range方法不同,如果直接print(range(0,10)),则输出结果是 遍历从0到9,依次输出
条件判断语句:
- If
-
if 条件:结果
-
if 条件: 结果 else : 结果
-
if 条件: 结果 elif : 结果
-
if 条件: 结果 elif : 结果 else : 结果
n = 1
if n<1:
print("n<1")
elif n>1:
print("n>1")
else:
print("n=1")
循环语句:
- while
while 条件 :结果
while True:
print("这是一段Python代码")
- for
for 变量名 in 可迭代变量 : 结果
demo = "这是一个例子"
for word in demo:
print(word, end=" ") #end=" " 目的是为了不换行
- 结束循环方式
1. break 结束循环。
number = 1
while number < 10:
print("这是一段Python代码")
break
print("这一句代码执行不了")
# 这是一段Python代码
2. continue 中止本次循环,进入下一次循环
number = 1
while number <= 3:
if number == 1:
number += 1
continue
print("这段代码不会输出")
print(str(number) + "--这是一段代码")
number += 1
# 2--这是一段代码
# 3--这是一段代码
3.条件控制 当不满足while之后的条件后,将结束循环
number = 1
while number < 3:
print(number)
number += 1
# 1
# 2
字符串格式化:
1.格式: msgs = "我的名字是%s,我学习Python已经%d个月了" % (username, times)
username = "火星人"
times = 12
msgs = "我的名字是%s,我学习Python已经%d个月了" % (username, times)
print(msgs)
# 我的名字是火星人,我学习Python已经12个月了
2.格式: msg = f"我的名字是{username},我学习Python{times}个月了"
username = "火星人"
times = 12
msgs = f"我的名字是{username},我学习Python已经{times}个月了"
print(msgs)
# 我的名字是火星人,我学习Python已经12个月了
3.格式:str的format()方法
demo = "我是{},我喜欢{}".format('小王','Python')
# demo = "我是{0},我喜欢{1}".format('小王','Python')
# demo = "我是{name},我喜欢{likes}".format(name = '小王', likes = 'Python')
# 我是小王,我喜欢Python
运算符:
1.算术运算符: + - * / %(取余) **(求幂) //(取整)
2.比较运算符: < > <= >= == !=
3.赋值运算符: += -= *= /= **= //=
4.逻辑运算符: and or not -执行顺序- not > and > or
(注释:and —— 前后都是真,结果才为真;当前后都是真时,取后者,当前后都是假时,取前者,当前后有一个是假,就取假
or —— 只要有一个是真,结果就取真;当前后都是假时,取后者,当前后都是真时,取前者)
5.成员运算符 : in not in
编码:
- ASCII——由美国创建,不支持中文,英文由一个字节码标识
- GBK——国码,由中国创建,英文由一个字节码表示,中文是由两个字节码表示
- Unicode——万国码,英文与中文都是由两个字节码表示,后期时,部分中文由四个字节码表示
- utf-8——可变长度的万国码,美国是一个字节码,欧洲是两个字节码,亚洲是三个字节码
文件写完但是还未保存时,系统以unicode的编码格式保存在内存
使用encode(‘编码’)方法,则是将内存中的 文件,以指定编码格式保存在 硬盘中
decode(‘编码’) 方法,则是以相同的编码格式 从硬盘中去读取
切片:
格式:
[开始的位置 : 结束的位置(不包括): 步长(每次跨几个索引取值)]
注意:从左到右读取,索引从 0 开始,从右往左读取,索引从-1开始,
当步长为正数时,stop_index的位置必须在star_index的右边
当步长为负数时,stop_index的位置必须在star_index的左边
demo = "Python"
demo_1 = [:] #表示全部字符串
demo_2 = [1:] #表示从索引 1 到结束
demo_3 = [::-1] #表示反方向输出该字符串
demo_4 = [1:5:2] #表示截取从索引1到索引5,但不包括索引5,每隔两个步长取一个数值
demo_5 = [-1:-4:-1] #结果为 noh
S = [1,2,3]
S[0:2] = “你好”
# 输出结果为: ['你','好',1,2,3]
# -- 以下是 假设类的 源码 --
def a(star_num, end_num, old_list, old_str):
# s = old_list #切片修改。。。 切片加步长,长度要统一
new_str = list(old_str) #将字符串转换为列表
new_str.reverse() #将列表反转
num = 0
while num < len(old_list):
if star_num <= num < end_num:
old_list.remove(old_list[num]) #将满足切片的范围的内容删除
num += 1
for sss in new_str:
old_list.insert(star_num,sss) #将反转后的字符串中的每个字符添加到原来的列表
return old_list
s = [1,2,3,4]
s_str = "你好asd"
li = a(1,2,s,s_str)
print(li)
深浅拷贝:
浅拷贝:只拷贝一层。除了第一层其余用的都是相同的引用地址 深拷贝:全部拷贝 import copy ---> copy.copy()
is 和 == 的区别:
is 比较的是内存地址是否相同,
== 比较的是值是否相同, is只要是相同,那么==肯定也是相同
代码块:
-
int(float):任何数字在同一代码块下都会复用。
-
bool:True和False在字典中会以1,0方式存在,并且复用。
-
str:几乎所有的字符串都会符合缓存机制,具体规定如下(了解即可!):
非乘法得到的字符串都满足代码块的缓存机制:
乘数小于等于1的时候,任何字符串满足代码块的缓存机制:
乘数>=2时:仅含大小写字母,数字,下划线,总长度<=20,满足代码块的缓存机制:
小数据池:
- 数字在 -5~ 256 之间,会使用小数据池里,不会重新创建新的
- 字符串的长度为0或者1,默认都采用了驻留机制(小数据池)。
- 字符串的长度>1,且只含有大小写字母,数字,下划线时,才会默认驻留
- 乘数小于等于1时:仅含大小写字母,数字,下划线,默认驻留。含其他字符,长度<=1,默认驻留。
- 乘数>=2时:仅含大小写字母,数字,下划线,总长度<=20,默认驻留。
- 指定驻留。没用过。
绝对路径与相对路径:
对于电脑中存在的 文件 D:/BianCheng/python_test/text.txt
假设 python_test 这个文件夹内有另一个 文件夹 名为 s19 ,在内部有一个文件,名为demo.py
假设 要在demo.py 文件中去往 text.txt文件中写入内容:
绝对路径: D:/BianCheng/python_test/s19/text.txt
相对路径: ../text.txt
在相对路径中,将本文件的绝对路径与目标文件的绝对路径进行对比,然后把本文件中相同的部分改为 ..
位于同级目录的话,直接文件名即可