python中的字符串和变量是什么_python:变量和字符串

变量(variable)

Python中什么是变量

1、在Python中,变量的概念基本上和初中代数的方程变量是一致的     ⑴例如,对于方程式 y=x*x ,x就是变量。当x=2时,计算结果是4,当x=5时,计算结果是25     ⑵只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型      2、变量代表某个值的名字,是指向各种类型值的名字,以后用到这个值时,直接引用名字即可,不用再写具体的值

创建变量

1、每个变量在使用前都必须赋值(否则会报错),变量赋值以后,该变量才会被创建:变量名 = 值     ⑴等号"=":赋值操作符,用来给变量赋值,左边是变量名,右边是指,不能写反了     ⑵"="左边:是变量名(最好能做到见名知意)     ⑶"="右边:是变量所指向的值     ⑷变量定义之后,后续就可以直接使用了

例1:

a = 3  #定义一个变量a,并给其赋值为3

注: 1、在Python中,一切都是对象,一切都是对象的引用

2、上面例子中,python将执行三个步骤来完成a = 3的赋值操作     ⑴创建也变量a     ⑵创建一个对象(分配一块内存),来存储值3     ⑶将变量与对象,通过指针连接起来,从变量到对象的连接称之为引用(变量引用对象)

2、在Python中,定义变量是不需要指定数据类型的     ⑴变量类型是在运行过程中根据对象的类型自动决定的     ⑵但Python本身是有数据类型的,它的数据类型可分为数字型和非数字型         ①数字型:整型int、浮点型float、布尔bool、复数型complex(bool:布尔类型中用True和False表示真和假(非零即真))         ②非数字型:字符串、列表、元组、字典、集合

2.1、在Python 2.x版本中,根据保存数值的长度整型还分为整型(int)和长整型(long),而在Python 3.x版本中整型并没有区分整型(int)和长整型(long)

例2:

a = 4  #定义一个数字型的变量

b = "hello,world"   #定义一个字符串型的变量

c = [1,2,3,4]   #定义一个列表型变量

d = {"a":1} #定义一个字典型变量

print(type(a))

print(type(b))

print(type(c))

print(type(d))

"""

注:可以看到,在Python中定义变量时,直接使用赋值语句来定义就可以了

不需要指定变量的类型:变量类型由值的类型决定(变量名是没有类型的,值才有类型)

"""

3、在Python中,等号"="是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量     ⑴一个变量在多次赋值后,会后面的值会覆盖前面的值例3:

a = 4  #定义一个数字型的变量

print(a)

print(type(a))

a = "hello,world"   #定义一个字符串型的变量

print(a)

print(type(a))

a = [1,2,3,4]   #定义一个列表型变量

print(a)

print(type(a))

"""

4

hello,world

[1, 2, 3, 4]

"""

注: 1、这种变量本身类型不固定的语言称之为动态语言(Python等),与之对应的是静态语言(JAVA等)     ⑴静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言,赋值语句如下(// 表示注释)     ⑵int a = 123; // a是整数类型变量     ⑶a = "mooc"; // 错误:不能把字符串赋给整型变量     ⑷和静态语言相比,动态语言更灵活,就是这个原因

2、在上面的例子中,a开始是一个整数,然后变成一个字符串,最后变成一个列表     ⑴看起来,a的类型发生了三次改变,实上,在python中,变量没有类型,类型是属于对象的:即,值的类型决定了变量的类型     ⑵就像前面所说,a = 4,是变量a引用了对象4,而以上三条语句,实际上是变量a引用了不同类型的对象     ⑶当变量a重新赋值给字符串'hello,world'时,它的上一个引用对象4马上被回收了,对象的空间自动放入自由内存空间池,等待后来的对象使用(具体的垃圾回收就有点多了,就不介绍了)

3、不要把赋值语句的等号等同于数学的等号

例4:

x = 10    #"="表示赋值

x = x + 2

print(x)

y = 11

print(x==y)  #"=="判断是否相等

"""

12

False

"""

注: 1、如果从数学上理解x = x + 2那无论如何是不成立的,在程序中,赋值语句先计算右侧的表达式x + 2,得到结果12,再赋给变量x。由于x之前的值是10,重新赋值后,x的值变成12

2、最后,理解变量在计算机内存中的表示也非常重要。当我们写:a = 'ABC'时,Python解释器干了两件事情:     ⑴在内存中创建了一个'ABC'的字符串     ⑵在内存中创建了一个名为a的变量,并把它指向'ABC'     ⑶也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,例如下面的代码

例4_1:

a = 1

b = 2

c = a + b

print(a)

print(b)

print(c)

"""

1

2

3

"""

注: 1、变量是指向各种类型值的名字,代表某个值的名字

2、在python中等号"="是赋值语句,在python中可以把任意数据类型赋值给一个变量

3、上面例子中,a,b,c都是我们创建的变量名,=是赋值语句,1,2,a+b(1+2)是变量值。第一句话的意思就是,创建变量名a,并将其赋值为1

例5:

a = 'ABC'

b = a   #先对b赋值,然后才改变的变量a值

a = 'XYZ'

print(a)

print(b)

"""

XYZ

ABC

"""

注:

变量的命名

1、 标识符:标识符就是在程序中定义的变量名和函数名     ⑴标识符可以由字母、下划线和数字组成     ⑵标识符不能以数字开头     ⑶标识符不能与关键字重名     ⑷标识符区分大小写      2、关键字:关键字就是在Python内部已经使用的标识符     ⑴查看Python关键字     例6:

import keyword

print(keyword.kwlist)

变量的命名规则

1、官方的命名规则     ⑴规定命名规则的目的是为了增加代码的识别性和可读性,并非绝对与强制     ⑵定义变量时,建议在=的左右两边各保留一个空格。     ⑶变量名由两个或多个单词组成时,每个单词都应使用小写字母,并且单词与单词之间用下划线连接。如:first_name      2、驼峰命名法     ⑴变量名由两个或多个单词组成时,还可以使用驼峰命名法来命名     ⑵小驼峰式命名法:第一个单词以小写字母开始,后续单词的首字母大写。如:firstName     ⑶大驼峰式命名法:每一个单词的首字母都大写。如:FirstName。

不同类型变量之间的计算

1、数字型变量之间的计算     ⑴在Python中,数字型变量之间是可以直接计算的     ⑵布尔类型(bool)变量在计算时True的值为1,False的值为0      2、字符串变量之间的计算     ⑴在Python中,字符串变量之间可以用"+"进行拼接,生成新的字符串(字符串拼接)     ⑵在Python中,字符串变量和整型变量之间可以用*进行计算,表示重复拼接相同的字符串。除此之外,数字型变量和字符串之间不能进行其他计算

例7:数字变量之间的加法

a = 1

b = 2

a = a + 1

b = a + b

print(a)

print(b)

"""

2

4

"""

例7_1:字符串变量之间的加、乘法

a = "hello"

b = " world"

b = a + b   #两个字符串拼接

a = a * 2

print(a)

print(b)

"""

hellohello

hello world

"""

例7_2:

a = "1"

b = "2"

b = a + b   #字符串型的数字进行拼接

print(b)

"""

12

"""

注: 1、字符串必须以引号标记开始,并以引号标记结束

2、只要使用双引号、单引号、三引号括起来的值,都属于字符串(当然三引号还用于多行注释,区别在于作为注释时,无赋值操作) 3、当数字为字符串时,在进行加法"+"计算时,表示的是字符串拼接,而不是数学上的加法

4、要告诉Python你在创建一个字符串,就要在字符两边加上引号,可以是单引号或双引号,Python表示在这一点上不挑剔。但必须成对,不能一边用单引号,另一边却用双引号

原始字符串

前面我们说到,在Python中创建一个字符串时,只需要在字符两边加上引号就可以了。那如果字符串内容中需要出现单引号或双引号,该怎么办?

例8:

print('Let's go')

#SyntaxError: invalid syntax

注: 1、如果在字符串中必须用到引号(如:'let's go'),如果直接这样写的话,python就会误会,报错:invalid syntax     ⑴因为字符中存在多个相同的引号,Python无法区分哪个是字符串自带的,哪个是用来表示字符串的     ⑵认为'Let'是一个字符串,而sgo'是另一个不完整的字符串,因此就报错了      2、有两种方法来改进     ⑴使用转义符号"\":对字符串中的引号进行转义,这样Python就知道这个引号是要直接输出的     ⑵使用用单引号、双引号、三引号来区分

例8_1:

print('Let\'s go')

#Let's go

#使用反斜杠来进行转义

例8_2:

print("Let's go")

print("""Let's go""")

"""

因为字符串本身中用的是单引号,因此外部就可以使用双引号或者三引号来区分

Let's go

Let's go

"""

3、另外在变成语言中还有跟多的特殊的符号来表示特殊的一些操作。如:\n表示换行等例9:

print("C:\now")

"""

C:

ow

"""

注: 1、在这个例子中我们实际想打印的是文件的目录字符串,但是由于字符串中"\n"刚好构成换行符,因此造成了实际输出与我们预期的不一致 2、解决这类问题的办法有两个     ⑴使用双转义:"C:\\now"     ⑵在使用原始字符串时,在字符串前面加字母"r":表明字符串为原始字符串(在后面的正则表达式中就会经常用到r来表示原始字符串)     例9_1:

print("C:\\now")

print(r"C:\now")

"""

C:\now

C:\now

"""

注: 1、在使用字符串时需要注意的一点是:无论是否为原始字符串,都不能以反斜杠作为结尾

2、反斜杠放在字符串的末尾表示该字符串还没有结束,换行继续的意思

长字符串

在打印一长串字符串时,我们有可能就会遇到使用很多换行符,这样就显得很是麻烦

例10:

print("从明天起做一个幸福的人\n喂马,砍柴,周游世界\n从明天起,关心粮食和蔬菜\n我有一所房子,面朝大海,春暖花开")

"""

从明天起做一个幸福的人

喂马,砍柴,周游世界

从明天起,关心粮食和蔬菜

我有一所房子,面朝大海,春暖花开

"""

注: 1、可以看到,如果字符串是一个长字符串,当要换行输出时,就需要使用很多换行符,这样就显得很麻烦了

2、如果需要写非常长的字符串,它需要跨多行,那么可以使用三个引号代替普通引号

3、python为我们提供了简单的方法:使用三重引号字符串"""内容"""

例9_1:

a = """从明天起做一个幸福的人

喂马,砍柴,周游世界

从明天起,关心粮食和蔬菜

我有一所房子,面朝大海,春暖花开

"""

print(a)

"""

从明天起做一个幸福的人

喂马,砍柴,周游世界

从明天起,关心粮食和蔬菜

我有一所房子,面朝大海,春暖花开

"""

注: 1、因为这种与众不同的引用方式,你可以在字符串之间同时使用单引号和双引号,而不需要使用反斜线进行转义

2、普通字符串也可以跨行。如果一行之中最后一个字符是反斜线,那么换行符本身"转义"了,也就是被忽略了

例9_2:

a = """从明天起做一个幸福的人

'喂马,砍柴,周游世界'

"从明天起,关心粮食和蔬菜"

我有一所房子,面朝大海,春暖花开

"""#在三引号中使用单引号和双引号:不需要转义

print(a)

b = "从明天起做一个" \

"幸福的人"

print(b)

"""

从明天起做一个幸福的人

'喂马,砍柴,周游世界'

"从明天起,关心粮食和蔬菜"

我有一所房子,面朝大海,春暖花开

从明天起做一个幸福的人

"""

注:编程中使用的标点符号都是英文的

拓展

1、python字符串分为两种类型,一种是bytes类型,一种是str类型     ⑴bytes存储的是byte类型,即二进制流类型     ⑵str类型(字符串)存储的是Unicode类型

2、类型转换     ⑴内置函数bytes():可以将字符串str类型转换成bytes类型。在使用内置函数bytes()的时候,必须明确encoding的参数,不可省略     ⑵内置函数str():可以将字符串bytes类型转换成str类型

3、字符串的元素是字符,bytes对象的元素则是字节

例10:

a = "hello,世界"

a = bytes(a , encoding='utf-8')

print(a)

#b'hello,\xe4\xb8\x96\xe7\x95\x8c'

注: 1、a是个字符串类型。Python有个内置函数bytes()可以将字符串str类型转换成bytes类型,

2、在进行类型转换后,a实际上是一串01的组合,但为了在ide环境中让我们相对直观的观察,其中的中文部分被表现成了b'\xe4\xb8\x96\xe7\x95\x8c'这种形式 3、开头的b表示这是一个bytes类型。\xe4是十六进制的表示方式,它占用1个字节的长度,因此”世界“被编码成utf-8后,我们可以数得出一共用了6个字节,每个汉字占用3个

例10_1:

a = b'hello,\xe4\xb8\x96\xe7\x95\x8c'

a = str(a, encoding='utf-8')

print(a)

#hello,世界

注: 1、Python已经严格区分了bytes和str两种数据类型,你不能在需要bytes类型参数的时候使用str参数,反之亦然。这点在读写磁盘文件时容易碰到

2、在bytes和str的互相转换过程中,实际就是编码解码的过程,必须显式地指定编码格式

3、另外在Python中转换字符串编码的函数还有encode()和encode(),这两种方法与这里的两个方法类似

例10_2:

a = b'hello,\xe4\xb8\x96\xe7\x95\x8c'

a = a.decode('UTF-8')

print(a)

# hello,世界

a = a.encode('GBK')

print(a)

# b'hello,\xca\xc0\xbd\xe7'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值