变量&常量
变量和常量都是存储值的内存区域,“变量”就是说值可以改变,“常量”就是说这个值不能改,是只读的,关于常量不详细介绍了
命名
上一次说过命名规则,数字、字母和下划线组成,不能数字开头,不能使用关键字
Python关键字有这么多:
['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']
查看Python关键字可以用下面的方法:
importkeyword
#下面打印关键字列表
print(keyword.kwlist)
#下面是判断一个词是不是Python的关键字
print(keyword.iskeyword('pass'))
那能怎么命名变量呢
#下面这些明明方式都是可以的,但是为了看着方便,不建议写成这样毫无意义的名字
a=1
_a=2
_1=3
_1a=4
#下面这些就是错误的,会报错
pass=1
$adb=1
1ab=1
赋值
a=1
这就完成了一个变量的赋值,在python中,每一次赋值操作会创建一个新的变量
比如:
a=1
a=2
是两个不一样的变量,我们可以通过查看他们的id(也就是他们的标识),方便的理解
a=1
print(id(a))
a=2
print(id(a))
运行结果:
4456127488
4456127520
嗯...这里是说变量a两次的id是不一样的,因为重新赋值后变成了一个新的变量
局部变量
在函数或者代码段内的变量
deffun():
name="xiaoming"
print(name)
fun()
print(name)
输出结果会报错,提示NameError: name 'name' is not defined并指向第六行,说明name在fun()外已经不能生效了
全局变量
#定义一个全局变量
_num1=15
_num2=20
importdemo1
defadd():
return(demo1._num1+demo1._num2)
print(add())
上面那一部分是在一个文件中被赋值的变量,另外新建一个文件,import这个保存全局变量的文件,然后使用变量就可以了
数据类型
每种语言都有说的东西,这是构成编程语言的基础。Python的数据类型有数字、字符串、元组、列表和字典。
数字、字符串、元组,是不可变数据类型,列表和字典是可变数据类型
还能按有序无序划分,字符串、元组、列表都是有序的
数字
数字有整形、浮点型、布尔型、复数
比较好的一点是,给变量赋值数字时,不需要关心数据类型,直接赋值后,Python会自动判断变量类型,创建对象
当然,如果需要查看数据类型,可以使用type类来查看,老规矩,贴一段~
a=1
b=1.1
c=True
d=1+2j
print(type(a))
print(type(b))
print(type(c))
print(type(d))
运行结果:
这些不陌生,都是以前见过的东西
字符串(划重点)
字符串的表示方法,上次已经讲明了,单引号、双引号、三引号来表示,这次看下相关操作和注意事项吧
转义 ---- 如果恰好需要输入特殊字符,可以用反斜杠\进行转义
path='C:\\windows\\users\\xxx'
print(path)
path2=r'C:\windows\users\xxx'
print(path2)
运行结果:
C:\windows\users\xxx
C:\windows\users\xxx
两种方式输出是一样的,第一种字符串中原有的\被转义,第二种因为字符串前有r,会保留原有格式输出
关于\转义的内容可以再百度一下,有些转义需要认识
截取
上边说过,字符串是有序的,既然有序,就能按序号截取字符串的内容,访问其中一部分的值
栗子:
str1="python"
print(len(str1))#看看字符串str1有多长
print(str1[1])#看看字符串str1第一个字符是啥
#取最后一个字符
print(str1[len(str1)-1])
print(str1[-1])
OK,现在取了字符串str1中的第一个和最后一个字符进行打印,运行结果是
6
y
n
n
len(str1)打印出了字符串的长度,而字符串的下标是从0开始的
所以取第一个字符(str[1])时,其实取的是我们看到的第二个字符y,这是正确的
两种取最后一个字符的方式都需要了解,并且个人认为-1这种下标简直太方便了
能不能取多个字符呢?
当然是可以的,依然可以用切片的方式,取出字符串中的部分内容
str1="python"
print(len(str1))#看看字符串str1有多长
print(str1[1])#看看字符串str1第一个字符是啥
#下面添加了三个参数,分别对应[start:end:step]中的开始位置、结束位置、步长
#也就是说,从第0个开始到第4个结束,每隔一个字符,取一个值
print(str1[0:4:2])
#来看下倒序取值,从-1开始,到-5,将每个值取出来,从第-1个到第-5个依次输出,当然,依然不包括最后一个
print(str1[-1:-5:-1])
输出
#字符串拼接
print("wang"+"er"+"xiao")
#字符串翻倍
print("pig"*4)
#格式化输出字符串
# %s 字符串
# %c 单个字符
# %b 二进制整数
# %d 十进制整数
# %i 十进制整数
# %f 浮点数
# %F 浮点数
# %.2f 保留两位小数的浮点数
print("今天是星期%s,这是第%d篇文章"%("二",2))
#还可以这么写
day="二"
num=2
str2="今天是星期{day},这是第{num}篇文章"
print(str2.format(day=day,num=num))
str1="python"
print("-".join(str1))#用“-”连接str中的所有字符
print(str4.replace("th","TH",1))#将字符串中的对应位置字符替换为新的字符,最多替换1次
查找
#查询字符(串)是否在字符串中
str1="python"
print("t"instr1)
print("h"instr1)
print("h"notinstr1)
print('t'notinstr1)
print("py"notinstr1)
#find 查找字符(串)是否在字符串中,如果在,返回第一次出现的位置,如果不在,返回-1
print(str1.find("p"))
print(str1.find("x"))
#index 如果在,返回第一次出现的位置,如果不在,抛出异常
print(str1.index("t"))
print(str1.index("x"))
判断
str3="Python3哈哈"
#对字符串进行判断,共11个,分别是
print(str3.isalpha())#是不是全字符
print(str3.isalnum())#是不是全是字符数字
print(str3.isdigit())#是不是全是数字
print(str3.isdecimal())#是否只包含十进制字符
print(str3.isidentifier())#是否以字母开头
print(str3.islower())#字母是否全小写
print(str3.isnumeric())#是否只有数字
print(str3.isprintable())#是否都是可见字符
print(str3.isspace())#是否是空格
print(str3.istitle())#是否所有单词首字母大写
print(str3.isupper())#字母是否都是大写
print(str3.startswith("p"))#是否以某字符开头
print(str3.endswith("哈"))#是否以某一字符结尾
print(str3.__contains__("thon"))#字符串是否在字符串中
#以下内容返回的是次数
print(str3.count("33",5,9))#判断字符(串)在字符串指定范围中出现的次数
print(str3.count("O"))#大写的O没有出现过
print(str3.count("o"))#小写的o出现过一次
操作
str4="python3"
str5="PythOn3"
str6=" this is python3 "
print(str4.capitalize())#首字母大写
print(str5.casefold())#字母小写
print(str4.center(45,"-"))#以某个字符填充字符串到指定长度
print(str4.replace("th","TH",1))#将字符串中的对应位置字符替换为新的字符,最多替换1次
print(str6.split("t"))#将字符串以指定字符切割,存入一个列表
print(str6.partition("x"))#包含分隔符,分隔符的前一部分、分隔符、分隔符后一部分组成三元元组;如果不包含分隔符,转换为源字符串、空、空的三元元组
print(str6.strip())#去除两边空格
print(str6.lstrip())#去除左边空格
print(str6.rstrip())#去除右边空格
print(str5.lower())#所有字母转小写
print(str5.upper())#所有字母转大写
lower和casefold,都是字母转换为小写,但casefold转换范围更大,不限于A-Z
好了,字符串操作到此结束,由于犯懒,只贴代码,环境好的直接运行就能明白啦~
宝爷镇楼~回家撸猫