Python变量

变量

变量就是可以重复使用且内容可变的一个量(一个数据的代号)

变量命名的规则

  • 变量命名可以包含数字,大小写字母,下划线或者更多(比如汉字),但是不推荐除了前三种内容之外的字符
  • 数字不可以作为开头
  • 在python中,以下划线开头的内容一般具有特殊意义,不建议使用
  • 大小写敏感
  • 推荐写法:
    • 使用固定含义的英文单词或缩写,srv=server skt = socket,一般以posix命名规则为主
    • 大驼峰命名法
      • 每个单词第一个字母均大写
      • 在Python中给类命名使用此法
      • MyFirstLove,IntOne
    • 小驼峰命名法
      • 类似大驼峰,但第一个字母小写
      • 在Python中一般给普通变量或函数命名
      • myFirstLove,intOne
    • posix命名法
      • 单词之间用下划线连接
      • 单词全部小写
      • my_first_love,int_one
  • 保留字和关键字
    • 关键字:已经被系统占用的
    • 保留字:目前不被系统占用,但以后有可能会用到
    • 变量命名必须避开,不要跟关键字和保留字重复
    • 系统关键字:‘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’
# 查看关键字
# 引用关键字模块
import keyword

# 打印出系统全部关键字
print(keyword.kwlist)

变量声明与赋值

  • 格式
    • var_name = var_value
    • var1 = var2 = var3 = var_value
    • var1, var2, var3 = v1, v2, v3
# 定义变量age,把18放入变量age中
age = 18
print(age)

# 给age1, age2, age3放入同样一个内容或值
age1 = age2 = age3 = 18
print(age1, age2, age3)

# 一行内给多个变量赋值
age4, age5, age6 = 12, 21, 45
print(age4, age5, age6)

"""
运行结果:
18
18 18 18
12 21 45
"""

两个变量互换

  • 格式:var1, var2 = var2, var1
# 变量互换案例
a = 1
b = 2

print(a, b)
print(id(a), id(b))
a, b = b, a
print(a, b)
print(id(a), id(b))

"""
运行结果:
1 2
140726778588928 140726778588960
2 1
140726778588960 140726778588928
"""
  • 如果一个值赋值给一个新的变量,则实际上是内存重新分配空间和内容给新的变量(新变量指向一段新的内存)
  • 如果一个旧的变量赋值给一个新的变量,则实际上是将旧变量的地址和值赋给新的变量(新变量指向旧变量的地址空间)
  • 如果一个已经给其他变量赋过值的值(内存中已存在)给新的变量赋值,则实际上是将此值所在的地址和内容赋给新的变量(新变量指向此值所在的地址空间)
# 变量赋值案例
a = 1
b = a
c = 1
d = 2

print(id(a))
print(a)
print(id(b))
print(b)
print(id(c))
print(c)
print(id(d))
print(d)

print('int类型占用字节数为:' + str(id(d)-id(a)))

"""
运行结果:
140726778588928
1
140726778588928
1
140726778588928
1
140726778588960
2
int类型占用字节数为:32
"""

变量类型

严格意义上讲,python只有一个类型——对象

  • 标准数据类型有六种
    • 数字类型:number(int、float、bool、complex)
    • 字符串类型:str
    • 列表:list
    • 元组:tuple
    • 集合:set
    • 字典:dict

数字类型(Number)

Python中的数字没有大小限制

整数(int)
  • 没有小数部分
  • 包含正数,负数和0
  • 二进制
    • 由0和1组成
    • 以0b开头
  • 八进制
    • 由0-7组成
    • 以0o开头
  • 十六进制
    • 由0-9,A-F组成
    • 以0x开头
# 整数
# 二进制定义
a1 = 0b110
print(a1)
print(type(a1))

# 八进制定义
a2 = 0o71
print(a2)
print(type(a2))

# 十六进制定义
a3 = 0xffff
print(a3)
print(type(a3))

"""
运行结果:
6
<class 'int'>
57
<class 'int'>
65535
<class 'int'>
"""
浮点数(float)
  • 有小数部分
  • 包含正数,负数和0
  • 科学计数法
    • 在e/E后面用整数表示10的指数
# 浮点数
a = 3.
b = .4
c = 0.0

print(a, b, c)
print(type(a), type(b), type(c))

# 科学计数法
d = 1.84e2
print(d)
print(type(d))

"""
运行结果:
3.0 0.4 0.0
<class 'float'> <class 'float'> <class 'float'>
184.0
<class 'float'>
"""
复数(complex)

一个由实部和虚部组成的数字

  • 复数的虚部用“j/J”表示
a = 5+4j
print(a)
布尔值(bool)

表示真假的值

  • 只有两个值:True/False
  • 在Python中,布尔值可以当成数字使用
    • 布尔值当成数字使用:True=1,False=0
    • 数字当成布尔值使用:0=False,其余当作True
# 布尔值当作数字使用
age1 = 18 + True
print(age1)

age2 = 18 + False
print(age2)

# 判断语句
a = -1
if a:
    print('负数是True')
else:
    print('负数是False')
    
"""
运行结果:
19
18
负数是True
"""

字符串

表达文字信息的内容

  • 形式上是引号引起来的一段内容
  • 引号包括单引号,双引号和三引号
    • 单引号和双引号含义一样
    • 三引号用来表示多行信息
  • 单双引号可以交叉使用
# 字符串案例
# 单双引号含义一致
love1 = 'I love Python'
print(love1)

love2 = "I love Python"
print(love2)

# 三引号可以表示多行
love3 = '''
I
love
Python
'''
print(love3)

# 三引号可以表示多行
love4 = """
I
love
Python
"""
print(love4)

"""
运行结果:
I love Python
I love Python

I
love
Python


I
love
Python
"""
转义字符

用一种方法表示出一系列不方便写出的内容,比如回车键、换行符等

  • 借助反斜杠字符转义,一旦字符串中出现反斜杠,则反斜杠后面一个或者几个字符将会进行转义
  • 不同操作系统对换行操作有不同的表示
    • Windows:\n
    • Linux:\r\n
  • 常用的转义字符:
转义字符描述
\\反斜杠
\'单引号
\"双引号
\b退格
\e转义
\000
\n换行
\v纵向制表符
\t横向制表符
\r回车
\f换页
\oyy八进制数,yy代表的字符
\xyy十六进制数,yy代表的字符
\other其他的字符以普通格式输出
# 转义字符案例1
s = 'Let\'s Go'
print(s)

"""
运行结果:
Let's Go
"""
# 转义字符案例2
s = 'c:\\User\\MadmanLyy'
print(s)

"""
运行结果:
c:\User\MadmanLyy
"""
# 转义字符案例3
s = 'I\nam\nMadman'
print(s)

"""
运行结果:
I
am
Madman
"""

None类型

表示没有

  • 用来占位置
  • 用来解除变量绑定
  • 如果函数没有返回值,可以返回None

字符串(str)

格式化

把字符串按照一定格式进行打印或填充

格式化的分类
传统格式化
  • 使用"%"进行格式化
    • "%"也叫占位符
    • %d:此处应该放入一个整数
    • %s:此处应该放入一个字符串
    • 占位符可以单独使用
    • 如果字符串中有占位符,则有几个占位符必须用几个实际内容代替,或者一个也不要
符号说明
%s字符串
%c整数转换为单个字符
%d十进制整数
%u无符号整数
%o八进制
%x十六进制,字母为小写
%X十六进制,字母为大写
%e浮点数,e为小写
%E浮点数,E为大写
%f/%F十进制浮点数
%g/%G十进制浮点数或指数浮点数自动转换
  • 格式字符前出现整数表示此占位符所占位置的宽度
  • 格式字符前出现“-”表示左对齐
  • 格式字符前出现“+”表示右对齐
  • 格式字符前出现“0”表示位数不足用“0”补齐
  • width表示宽度
  • pricision表示精度
# 占位符案例1
s = "I love %s"

print(s)
print(s%'Python')

"""
运行结果:
I love %s
I love Python
"""
# 占位符案例2
print('I love %s'%'Coding')
print('I have %s'%100)
print('我今年%d岁了'%18)
print('我今年%d岁了'%'18')

"""
运行结果:
I love Coding
I have 100
我今年18岁了
TypeError: %d format: a number is required, not str
"""
# 占位符案例3
s1 = 'I am %fKg weight, %fm height.'
print(s1)
print(s1%(48.5, 1.61))

s2 = 'I am %.2fKg weight, %.2fm height.'
print(s2)
print(s2%(48.5, 1.61))

"""
运行结果:
I am %fKg weight, %fm height.
I am 48.500000Kg weight, 1.610000m height.
I am %.2fKg weight, %.2fm height.
I am 48.50Kg weight, 1.61m height.
"""
format()格式化
  • 使用函数形式进行格式化,代替百分号的占位符形式
    • 可指定位置也可不指定
    • 推荐指定位置
  • 格式字符
    • ^, <, >分别是居中、左对齐、右对齐,后面带宽度
    • ":"号后面带填充的字符,只能是一个字符,不指定则默认用空格填充
    • “+“号表示在正数前显示”+”,在负数前显示"-"," "表示在正数前加空格
    • b、d、o、x分别表示二进制、十进制、八进制、十六进制
    • 可用大括号"{}"来转义大括号
# format()格式化案例1
s1 = '{} {}!'
print(s1.format('Hello', 'World'))

s2 = '{} {}!'.format('Hello', 'World')
print(s2)

s3 = '{1} {1}!'.format('Hello', 'World')
print(s3)

s4 = 'I am {0},{0} is me!'.format('Madman')
print(s4)

s5 = 'I am {},{} is me!'.format('Madman')
print(s5)

"""
运行结果:
Hello World!
Hello World!
World World!
I am Madman,Madman is me!
IndexError: tuple index out of range
"""
# format()格式化案例2
s = 'We are {team_name}, our URL is {url}, {person_name} so good!'.format(team_name='Pythoner', url='No', person_name='Madman')
print(s)

"""
运行结果:
We are Pythoner, our URL is No, Madman so good!
"""
# format()格式化案例3
s = 'We are {team_name}, our URL is {url}, {person_name} so good'

s_dict = {'team_name': 'Pythoner', 'url': 'No', 'person_name': 'Madman'}

#  解包操作
s = s.format(**s_dict)
print(s)

"""
运行结果:
We are Pythoner, our URL is No, Madman so good
"""
# format()格式化案例4
s = 'I am {:.2f}m height, {:.2f}Kg weight.'
print(s)
print(s.format(1.61, 58.77))

"""
运行结果:
I am {:.2f}m height, {:.2f}Kg weight.
I am 1.61m height, 58.77Kg weight.
"""

字符串内置函数

查找类函数
find()/rfind()

find():从左边开始查找字符串是否包含一个子串,如果是则返回子串第一次出现的位置
rfind():从右边开始查找字符串是否包含一个子串,如果是则返回子串第一次出现的位置

  • 格式:str1.find(str2)
    • str2为子串
  • 参数
    • 子串
    • 开始查找的位置
    • 结束查找的位置
  • 返回值:int类型,-1表示没找到,其余数字表示子串第一次出现的位置
# find()案例
s1 = 'Madman is a good man'
s2 = 'good'
rst1 = s1.find(s2)

print(type(rst1))
print(rst1)

s3 = 'bad'
rst2 = s1.find(s3)

print(type(rst2))
print(rst2)

s4 = 'a'
rst3 = s1.find(s4, 3, 7)

print(type(rst3))
print(rst3)

"""
运行结果:
<class 'int'>
12
<class 'int'>
-1
<class 'int'>
4
"""
index()/rindex()

index():从左边开始查找字符串是否包含一个子串,如果是则返回子串第一次出现的位置
rindex():从右边开始查找字符串是否包含一个子串,如果是则返回子串第一次出现的位置

  • 格式:str1.index(str2)
    • str2为子串
  • 参数
    • 子串
    • 开始查找的位置
    • 结束查找的位置
  • 返回值:int类型,找到则返回子串第一次出现的位置,没有找到则报错
# index()案例
s1 = 'Madman is a good man'
s2 = 'good'
rst1 = s1.index(s2)

print(type(rst1))
print(rst1)

s3 = 'bad'
rst2 = s1.index(s3)

print(type(rst2))
print(rst2)

"""
运行结果:
<class 'int'>
12
ValueError: substring not found
"""
判断类函数

此类函数的特定是一般都用is开头

isalpha()

判断是否字母

  • 汉字被认为是alpha,所以此函数无法区分英文字母和汉字
  • 格式:str.isalpha()
  • 返回值:布尔值
# isalpha()案例
s1 = 'I am madman'
s2 = '我是疯子'
s3 = 'Madman'

print(type(s1.isalpha()))
print(s1.isalpha())
print(type(s2.isalpha()))
print(s2.isalpha())
print(type(s3.isalpha()))
print(s3.isalpha())

"""
运行结果:
<class 'bool'>
False
<class 'bool'>
True
<class 'bool'>
True
"""
isdigit()、isnumeric()、isdecimal()区别
  • 此类函数不建议使用
  • isdigit()
    • True:Unicode数字、Byte数字(单字节)、全角数字(双字节)、罗马数字
    • False:汉字数字
    • Error:无
  • isdecimal()
    • True:Unicode数字、全角数字(双字节)
    • False:罗马数字、汉字数字
    • Error:Byte数字(单字节)
  • isnumeric()
    • True:Unicode数字、全角数字(双字节)、罗马数字、汉字数字
    • False:无
    • Error:Byte数字(单字节)
# isdigit()、isnumeric()、isdecimal()案例
num = '一二三四'
print(num.isdigit())
print(num.isdecimal())
print(num.isnumeric)

"""
运行结果:
False
False
True
"""
islower()/isupper()

islower():判断整个字符串是不是小写
isupper():判断整个字符串是不是大写

  • 格式:str.islower()
  • 返回值:布尔值
  • 注意
    • 汉字字符串无大小写概念,所以会显示False
    • 空格等符号会被忽略
str1 = 'madman'
str2 = 'Madman'
str3 = 'mad man'
str4 = '疯子'

print(type(str1.islower()))
print(str1.islower())
print(type(str2.islower()))
print(str2.islower())
print(type(str3.islower()))
print(str3.islower())
print(type(str4.islower()))
print(str4.islower())

"""
运行结果:
<class 'bool'>
True
<class 'bool'>
False
<class 'bool'>
True
<class 'bool'>
False
"""
内容判断类函数
startswith()/endswith()

startswith():检查否个字符串是否以某个子串开头
endswith():检查否个字符串是否以某个子串结尾

  • 格式:str1.startswith(str2)
    • str2是子串
  • 参数
    • 被检查的字符串,必须要有
    • 开始检查范围
    • 结束检查范围
# startswith()/endswith()案例
str1 = 'Madman'
str2 = 'is'

s = 'Madman is a good man'

print(type(s.startswith(str1)))
print(s.startswith(str1))
print(type(s.startswith(str2)))
print(s.startswith(str2))

"""
运行结果:
<class 'bool'>
True
<class 'bool'>
False
"""
操作类函数
strip()/lstrip()/rstrip()

strip():删除字符串两边指定的字符,如果指定字符连续,会删除多个字符,默认是空格
lstrip():删除字符串左边指定的字符,如果指定字符连续,会删除多个字符,默认是空格
rstrip():删除字符串右边指定的字符,如果指定字符连续,会删除多个字符,默认是空格

  • 格式:str.strip()
# strip()案例
str1 = '       Madman       '
print('--' + str1.strip() + '--')

"""
运行结果:
--Madman--
"""
join()

指定分隔符拼接成字符串

  • 格式:分隔符.join(可迭代内容)
# join()案例
s = '-'
ss = ['Madman', 'is', 'a', 'good', 'man']

print(s.join(ss))

"""
运行结果:
Madman-is-a-good-man
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值