![Python实战指南:手把手教你掌握300个精彩案例](https://wfqqreader-1252317822.image.myqcloud.com/cover/214/44510214/b_44510214.jpg)
3.1 变量与赋值
案例59 声明变量
导语
Python是动态语言,声明变量时不需要指定变量类型。声明变量后必须进行赋值,否则在访问变量时会引发NameError异常。
变量的类型决定于它的值,例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P90_80514.jpg?sign=1739305338-79uD6BCMQPCtwvUr3lTaSxAVsWhfVTQn-0-e89b36b2481481c9ab87bde203dc6437)
上面代码声明了四个变量,依据它们各自引用的值,变量a为整型(int),变量b为字符串类型(str),变量c为浮点数类型(float)。
在相同的代码范围内(例如在模块级别声明的变量),向同一名称的变量赋值并不会产生同名的新变量,而是让变量引用最新赋值的对象,并解除对前一个对象的引用。例如下面代码中,变量k先是引用字符串案例,当执行第二行代码后,变量k解除对字符串对象的引用,并与新的整数值建立引用关系(可称为“绑定”)。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P90_80515.jpg?sign=1739305338-hzCjG5mrUKIrZAl9lUls4Y5qtx6kSjiu-0-56884b8ac6c094821d16e405328b7fd0)
声明变量时还可以赋值为None,它是一个内置的值,表示变量缺少有效的引用,即没有值的变量。None值所对应的Python的内置类型为NoneType。None转换为布尔类型的值为False,因此,None值可以用于判断语句中,例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P91_80517.jpg?sign=1739305338-hW0AVPynAm77ONaLfqLI2WaOgFrmxd5u-0-f4f67eccc23c170270aba9da3cbba0ce)
以下代码会输出“False”。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P91_80518.jpg?sign=1739305338-Zjob7q5x6gPGAamIG8SeLyrB22FTtu8y-0-cd711925b8717ae9b76c20f210517ab2)
操作流程
步骤1:声明四个变量,分别进行赋值(必须赋值)。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P91_80519.jpg?sign=1739305338-PNe6F5SzjVdWcjopa1q4iRY6ZaT3AeEr-0-555fd6b29bcea372739194fa592c412b)
步骤2:依次输出上述四个变量的数据类型名称。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P91_80520.jpg?sign=1739305338-IFA1IeF2b7PCFIGlvTyGmsHbtQ0yXMPq-0-658183243dabcf6e6a90ada819c467dc)
__class__属性可以获取指定对象的数据类型信息(type类封装类型信息),再通过__name__属性获取类型名称的字符串表示方式。__class__与__name__都属于有特殊用途的属性。
注意:并非所有对象都有__name__属性,可以先调用hasattr(obj,'__name__')进行检查,如果存在__name__属性,则hasattr函数返回True,否则返回False。
步骤3:案例代码执行后,输出结果如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P91_80521.jpg?sign=1739305338-QF6zeYmqplvAQcNJrikl0G4W0eUaNv8S-0-71f5e51ec4675321a368242023ac7e03)
案例60 类型批注
导语
在声明变量时,可以显式地批注其应当使用的数据类型。例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P92_80523.jpg?sign=1739305338-8aS8op3VgZdbzOQfFlIh25JIJA3ghahf-0-be7592ed4ef67eaf69dacb39f75b03e8)
通过批注,表明变量num为int类型,赋值时应该使用整数值。不过,类型批注并不会影响Python语言的动态性——如果所赋的值不是int类型,在运行阶段是不会发生错误的。就像这样:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P92_80524.jpg?sign=1739305338-oOljTaHSeoFGKG8R5LhYsaye2nYusKEf-0-5610561a4d81ae65afac8dd534ccc70f)
尽管批注了int类型,使用字符串类型的案例进行赋值,也不会影响代码的执行。类型批注仅用于提示开发人员,尽可能为变量设置恰当的值。
操作流程
步骤1:声明一个变量xa,并批注为str(字符串)类型,但赋值时使用int(整数)类型的值。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P92_80525.jpg?sign=1739305338-dOQDhBombiiyZVqQ2gMy5ef7CrHezShV-0-4b75f7ec7bc4b0b2faef45c6ba6d5fab)
步骤2:在屏幕上打印xa变量实际引用的类型。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P92_80526.jpg?sign=1739305338-XdastS7ZHat2r1FTuyYGlCUZKGX66ciU-0-285af6b8a19cd5e768dc94b02b5f7693)
步骤3:打印当前模块中__annotations__属性的内容。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P92_80527.jpg?sign=1739305338-aJTZfGFMtoJ5TNFIFiWdCV3u8Bflejex-0-7436edeb7c3146e0c9b6c989a0dd5545)
变量的批注信息会存储到__annotations__属性中,以字典的形式记录变量与所批注的类型。
步骤4:运行案例代码,屏幕输出内容如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P92_80528.jpg?sign=1739305338-uXI08RzzuJim0UptIUCy3JxEjOcJ5uld-0-89622f85dfbeb3349ed4c7af360ab4b4)
案例61 声明语句也是变量赋值
导语
Python代码在执行声明函数(使用def语句)和类(使用class语句)时,实际上也进行了变量赋值。函数或类的名称就是变量的名称,而变量引用的是函数或类的类型案例。在Python中,函数(包括lambda表达式)、类型(由type类描述)、方法等都被视为对象。
例如,下面代码声明了函数test。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P93_80530.jpg?sign=1739305338-veeRK4FTsJ7k6RaTjsaHkpv6I1hpzeHd-0-6d7209a8f60a606568a6fc987538041e)
在模块代码运行时,无论test函数是否被调用,def关键字所在的一行(即声明语句)都会被执行,而函数体(上面例子中的pass语句就是函数体)代码只有在函数被调用时才会执行。声明语句执行后,会在当前(模块)的名称空间中生成一个名为test的变量(与test函数名称相同),并把test函数的引用赋值给test变量。此过程类似于
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P93_80531.jpg?sign=1739305338-LmQgfCGJ9tc0A2SFlSTJKHSYpO9LNu9R-0-ef409fe13561e901ba1dc855964ec2e7)
赋值运算符(=)右边的test是函数引用,左边是变量名称,只是变量名与函数名相同而已。因此,还可以用其他变量去引用test函数,例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P93_80532.jpg?sign=1739305338-mVFlYF9MngPit2ug4rYv7zg3ro71K8NX-0-ebd7c29fa17fcc4f4e6f977bda3fd6ea)
赋值后,可以这样调用test函数
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P93_80533.jpg?sign=1739305338-T6IbO6adNxV2DXSSV8M2s7r3auGwLxwd-0-a5826113f745aeabb2619bc093f0d595)
类似于为函数起一个别名。
对于类,也是相同的原理。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P93_80535.jpg?sign=1739305338-0eCou1S5wamYlD2nYdFbKG1umvo8B0dt-0-5ad0556445fcd4ff69200c992cd9662b)
当案例化A类时,可以这样
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P93_80536.jpg?sign=1739305338-r9GfyZ4oejBysow37aDWnRLXgOMEohBS-0-952f094b1b71e7d466b41d9a4db1ba0f)
so_a是个变量,它引用A类的类型对象,而so_a()会调用A类的构造函数创建A的案例,再把A的案例赋给另一个变量var。
操作流程
步骤1:声明一个函数,命名为num_sqr。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P93_80537.jpg?sign=1739305338-E8lmZxh90hmgbq0HbHSDSKeUkzE86cSe-0-be7a84358f4282f304370129060a8304)
对于当前模块的名称空间而言,此时全局变量中会存在一个名为num_sqr的变量,它引用了num_sqr函数,即变量名称与函数名称相同。
步骤2:再声明一个变量,让它也引用num_sqr函数。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P94_80539.jpg?sign=1739305338-KGxG1KVP3qtDayt0avqcBOZeUTDNyHRn-0-36060631cfe6831d0ec74f133f03d7b2)
步骤3:分别向屏幕打印num_sqr和sqr_c变量的值。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P94_80540.jpg?sign=1739305338-CjlvUp3sTBpg3qUwv1mB4yJnhJtEXrFw-0-0f06dcbaafd5b19dfc3c746201e859ad)
当这两行代码执行后,屏幕上会输出以下内容:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P94_80541.jpg?sign=1739305338-9tZIpShLZOiwjQYotHaIAIbFOKGbbDR2-0-bfd25b33287fe7e57066038d84ca80ca)
从输出结果中可以看到,两个变量所引用的对象具有相同的内存地址,表明它们都引用了同一个案例——num_sqr函数。
步骤4:下面代码获取在全局变量中引用了num_sqr函数的所有变量。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P94_80542.jpg?sign=1739305338-d6jGTtPMzJ3GdgPuxnI2Baq6SKeAsheL-0-568c2f27a7132f47f9b7d3b3248dc563)
调用globals函数返回存储全局变量的字典,并筛选出value为num_sqr对象引用的子项(通过串联的if语句)。
得到结果如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P94_80543.jpg?sign=1739305338-9uqH1FkwPwIcSVMSlr9ihvk8SpgSMHlQ-0-3b0227c34037be161dd0bd044c92cda5)
案例62 as关键字与赋值
在import…或者from…import…语句后面,都可以使用as关键字对导入的对象进行重新命名(分配别名)。例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P94_80544.jpg?sign=1739305338-kOt4fVieD0HcwoNxUgH3auWwCFhdSECf-0-7ded6010b7e68e2656d83926c52aa404)
从some_module模块中导入fun1函数,然后用as关键字分配一个别名——fun2。此过程类似于声明了新的变量fun2并让它引用fun1函数。或者为导入的模块分配一个别名
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P94_80545.jpg?sign=1739305338-0nzx9xWv8ytasJFRMDPBnZDhvGYEIoKj-0-9f75936039050cc21820b26254f4a218)
此过程相当于声明新的变量new_name,然后引用导入的some_module模块。
操作流程
步骤1:新建test_mod模块,在模块中声明trunc_str函数。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P95_80547.jpg?sign=1739305338-QpRCQaaYDarbehP4ey9chrDf8KRgh9Jm-0-695277dca32e07d02fbcf0c84835101f)
trunc_str函数的功能是截断字符串,当字符串s的长度小于或者等于n时,不做处理,将原字符串返回;当字符串s的长度大于n时,截断字符串,保留n个字符,并在新字符串的末尾加上省略号。
步骤2:在顶层代码模块中,导入trunc_str函数,然后使用as关键字分配一个别名truncateStr。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P95_80548.jpg?sign=1739305338-tg7keLazbFx3s3sO5G8XG6FZr7AyXLnI-0-8470db7ff44583138cf318f98143ad0c)
步骤3:随后通过变量truncateStr就可以访问trunc_str函数。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P95_80549.jpg?sign=1739305338-gTlCx6XSH6UlpoosK4uEJPBNrJzezGdu-0-0f06d2a481f75a8f97424e4522647253)
步骤4:运行案例代码,屏幕输出结果如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P95_80550.jpg?sign=1739305338-sB0ehDpShsBzPMcFzWB9gfeRMbggWUbp-0-74e4be948dff3cb9438c6a3efdf93253)
案例63 组合赋值法
导语
Python允许在一个赋值语句中同时初始化多个变量。例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P95_80551.jpg?sign=1739305338-YgHwcdYpDw8td62sfbnrPlff8h0shkIt-0-1309515daf4e342be5302d174afc1b02)
相当于
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P95_80552.jpg?sign=1739305338-HtQjEAQeJDZusbAs14YD9STIwy9vCa9c-0-bed4eaa071f47639c84f68e3b682bc3f)
实际上,此赋值行为是对元组类型(tuple)的解包,即
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80554.jpg?sign=1739305338-Jmfm606yYclsB6ZmFwLwBOii1euPd7T4-0-0dd70afc7cb510e29265c9c0d132ad42)
赋值运算符(=)右边是元组对象,一对小括号可以省略。赋值语句执行时,会从左到右依次提取出元组中的元素,逐个赋值给左边的变量列表。如上述代码中,7赋值给变量x,8赋值给变量y,9赋值给变量z。
但下面代码会发生错误。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80555.jpg?sign=1739305338-lLSMtZ1vAftUw1yazZsceYgyZrV41HIb-0-567d5a3ffddd0f0bfb7c835190a60b32)
因为用于赋值的元组有3个元素,但接收的变量只有两个,在数量上不匹配。若是希望把1赋值给变量a,然后将剩余的2、3赋值给变量b,可以这样写
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80556.jpg?sign=1739305338-5q9ZNFieNaYrgJcdJK8woXNPKBqCa8qd-0-27f3d98fc1d7f8a7a26d65c791082525)
赋值后,a引用整数值1,b引用了一个列表对象,列表中包含2、3两个整数值。
操作流程
步骤1:用两个浮点型数值来初始化两个变量。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80557.jpg?sign=1739305338-9yi7cnYjOmbGUvTmdlTRm3wcT8iH5xc1-0-59bf8aba33b4b69631a937e1290ca4ae)
步骤2:用于初始化的变量值也可以是不同类型的。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80558.jpg?sign=1739305338-E29FNu7nhzrPIBqDAUZ78X1xeXGr4WsJ-0-81a9cd738a04f71165a68783b5e33b19)
步骤3:用4个字符串对象案例化3个变量,其中,s1、s2依次引用前两个元素,sn引用剩下的两个元素。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80559.jpg?sign=1739305338-AgYe0BTDtuVyAQK6X6KZR1xWhzeYk3XH-0-21edc74cb1ceda0cd9138e8826461928)
步骤4:输出各个变量的值。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80560.jpg?sign=1739305338-5MilgoMYvISDteYZQHnHvXT07QmIEsin-0-15905cc9de0f94d7fb4e99f6a5090eb6)
步骤5:运行案例代码,输出结果如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80561.jpg?sign=1739305338-7sDCgAaEfB7aAySuVoqcxNmG1sVcs67u-0-df114b067a54af437ebc6131c0130a7e)
注意:sn变量使用列表类型(list)来存储剩余的两个变量值,之所以使用列表类型,是为了允许代码修改sn变量中所包含的元素。
案例64 组合赋值与表达式列表
导语
组合赋值语句的实质是在赋值运算符(=)的两边各放置一个表达式列表。常规情况下,赋值运算符两边的表达式个数应当相等,并且从左到右依次赋值。例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P97_80564.jpg?sign=1739305338-nxsDX2botjTw6pYgYleILWJcFsjk1tnd-0-c9923acf42abecb65938483a5ace8d2a)
赋值运算符两边的表达式列表实为元组对象,因此,上述代码可以写成
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P97_80565.jpg?sign=1739305338-6vWdDto07aQktbEwaLLgLxk5GD7NwXGT-0-f786fbf52f901e5875411fddd7c89548)
或者,还可以这样写
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P97_80566.jpg?sign=1739305338-eTUUNzEIpIbEn7lvpJEzDbK3l0jw3gkn-0-6ea0b64514826e92329bea2d4aeb6714)
使用列表(list)的格式来进行组合赋值也是允许的,例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P97_80567.jpg?sign=1739305338-CASGNJxX5mVGqlkwEvOwtXidpmjpv6gH-0-2b462b55f330410c86a3c3b106271862)
以下赋值语句,左边是列表格式,右边是元组格式,这种情况也是允许的。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P97_80568.jpg?sign=1739305338-rjBLM57nyIkSGwc6aIovdVRc8l9ss3l1-0-352ad461eebfe5e71dad2345d0259e1c)
如果赋值运算符两边的元素个数不相等,会发生语法错误。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P97_80569.jpg?sign=1739305338-ugkVKZL05HiAJ466FY5TNGgMVc6Nhoj1-0-25a6cb45b33a38ec9e7d6996549827e4)
第一行代码中,左边有两个变量,而右边有三个值;第二行代码则相反,左边有三个变量,右边有两个值。
变量名称前可以加上星号(∗),表示该变量接收多个值。这些值是从序列对象(列表、元组等)中“解包”(unpack)出来的,然后组合为新的序列赋值给带星号的变量。请看下面代码。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P98_80571.jpg?sign=1739305338-il5XpSzfL6aftl8EZHuHgTTdZVPREVRW-0-b0a7902cf2b64934cc43ff404ae626a1)
上面代码先将字符“a”赋值给变量a,再把剩下的字符“b”和“c”组成新的列表赋值给变量b。把顺序反过来也是可行的。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P98_80572.jpg?sign=1739305338-HnGgYhjb2eCx6v2wPSsktCT3GYLeMp1H-0-ea81a321b3ee6b717e60b917e8430ca3)
此时,变量a前面带有星号,赋值过程为:先将最后一个字符“c”赋值给变量b,再将剩下的两个字符“a”和“b”组成新的列表赋值给变量a。
但是,同一个变量列表中不能出现多个带星号的变量,下面语句会发生错误。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P98_80573.jpg?sign=1739305338-QsvMNavqMVhnUXxeaCKyZYSNmVJH3utM-0-16c0282c862f82927be9bb33c9a92479)
因为带星号的变量所引用的值列表在元素个数上是不确定的,同时使用多个带星号的变量,会导致赋值运算符右边的值列表无法进行准确的分配。
如果赋值运算符左边只有一个变量,也是可以使用带星号的变量的,以下三条语句都是有效的。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P98_80574.jpg?sign=1739305338-dbB57bD02uWByNwjE3r6Y5lzrIJ97rTF-0-ae3e04bf76ca3d0bb00d8779cf2e7dd9)
第一行与第二行都是把变量列表组成元组对象,由于第一行中省略了小括号,所以变量后面要加上一个逗号,表示x不是单个值,而是一个元组。第三行代码中变量x表示一个列表对象。
综上所述,不管是赋值语句的左边还是右边,表达式列表可以包装为元组(tuple)和列表(list)两种序列格式。
操作流程
步骤1:声明n1、n2、n3三个变量,并进行组合赋值。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P98_80575.jpg?sign=1739305338-pPID4m6Jq9U5H2W6UGKHh9iy6XNnl9k2-0-3be2e1b9074bce285772f16427df1e84)
此赋值语句中,赋值运算符两边的表达式列表均为元组结构。
步骤2:声明m1、m2、m3变量,并用五个浮点数值赋值。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P98_80576.jpg?sign=1739305338-dQ8UdDhthmv9eBH9fIbGNq3kTZFWQP9G-0-0d1426d36e704c1ffa74ef16c2095992)
此语句先将数值0.1赋值给m1变量,再把0.5赋值给m3变量,剩下的0.2、0.3、0.4三个数值组成新的列表赋值给m2变量。
步骤3:将字符串案例赋值给变量q。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P98_80577.jpg?sign=1739305338-E60ilnkcNxHEDegbX3ESaywly6ZXXANE-0-c53db38721d8dd1aa3114cf6cf14df1e)
此语句与q='abcdefg'语句不同,如果q前面不带星号,那么q直接引用字符串案例。而上面代码中变量q前有星号,而且放到一对中括号中,表明q接收的是字符列表(即将字符串“abcdefg”,解包为由“a”“b”“c”“d”“e”“f”“g”七个单独字符组成的列表)。
步骤4:在屏幕上打印上述各个变量的值。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P99_80579.jpg?sign=1739305338-QV5hKnRD5vwZsVRo4HI6k28ImxStM9jo-0-a215706d680c5652577397046df1daf2)
步骤5:运行案例代码,屏幕将输出以下内容:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P99_80580.jpg?sign=1739305338-AZss1LLizmr1gWQNixzpUoEdMX5Q725i-0-b07bce07b10ebef683ed5b5882d57c8e)