![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=1739297193-Hf6EUqcwC4pRi6Lf2HjYnVNkFocKu2ji-0-26a175c84d46d739a630c52e81925573)
上面代码声明了四个变量,依据它们各自引用的值,变量a为整型(int),变量b为字符串类型(str),变量c为浮点数类型(float)。
在相同的代码范围内(例如在模块级别声明的变量),向同一名称的变量赋值并不会产生同名的新变量,而是让变量引用最新赋值的对象,并解除对前一个对象的引用。例如下面代码中,变量k先是引用字符串案例,当执行第二行代码后,变量k解除对字符串对象的引用,并与新的整数值建立引用关系(可称为“绑定”)。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P90_80515.jpg?sign=1739297193-nPpmAxaVCO2IIL8eIFishC9u5oLbTpHV-0-4b8a88648445114826b5928682b3582e)
声明变量时还可以赋值为None,它是一个内置的值,表示变量缺少有效的引用,即没有值的变量。None值所对应的Python的内置类型为NoneType。None转换为布尔类型的值为False,因此,None值可以用于判断语句中,例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P91_80517.jpg?sign=1739297193-lJAujHKgXmNoU94QmiEkrrdiuFyOmU3f-0-9ebefbfa73938c586fca9a10f9c78264)
以下代码会输出“False”。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P91_80518.jpg?sign=1739297193-bb9ZwXg10IFlf1lLnP1U9OjXZTdrxjbI-0-023d30d63af9393115a3c7d3a34bf241)
操作流程
步骤1:声明四个变量,分别进行赋值(必须赋值)。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P91_80519.jpg?sign=1739297193-USVjBb9oD3Mbp6JbXYPFytUdvImUwRGt-0-fbcb7b7b2697d3859711d8b873def69e)
步骤2:依次输出上述四个变量的数据类型名称。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P91_80520.jpg?sign=1739297193-mWJXWBkBVWGAF2UfRY7OWGfhYCuY8qVh-0-3278cf81d5f89123c7bc3d77329d1a4d)
__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=1739297193-5G58GADBkTLkXSUTmgi5g3RkalMw2zXO-0-bb7337110ea78bcff0b4a24563378b5a)
案例60 类型批注
导语
在声明变量时,可以显式地批注其应当使用的数据类型。例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P92_80523.jpg?sign=1739297193-ClKgYujEuf5rR8Luk8BvL2iRHKTajK9P-0-e2ed17c57f809d9921ee7d1ea9962560)
通过批注,表明变量num为int类型,赋值时应该使用整数值。不过,类型批注并不会影响Python语言的动态性——如果所赋的值不是int类型,在运行阶段是不会发生错误的。就像这样:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P92_80524.jpg?sign=1739297193-Bh0cuFKNqxxGBnLfDY4ZEJDisUmoB0ci-0-12505cc2b953a926dce7005c68b6d0ae)
尽管批注了int类型,使用字符串类型的案例进行赋值,也不会影响代码的执行。类型批注仅用于提示开发人员,尽可能为变量设置恰当的值。
操作流程
步骤1:声明一个变量xa,并批注为str(字符串)类型,但赋值时使用int(整数)类型的值。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P92_80525.jpg?sign=1739297193-aUZ5Zrk4WWyWmRFXrAuWM0T1yfWrOIsH-0-c49094d208b42e9c16f86165357ea30f)
步骤2:在屏幕上打印xa变量实际引用的类型。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P92_80526.jpg?sign=1739297193-iqyueXtEbUk1LfH7BsOUYFv03WPKW7QD-0-4763d7ad1e63f5a52c9a880f72503370)
步骤3:打印当前模块中__annotations__属性的内容。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P92_80527.jpg?sign=1739297193-nXGQZiHxvGk4hGJPHtkGdv6EY7U5Y5Ul-0-d179c41603819913b0af18ea1fec634a)
变量的批注信息会存储到__annotations__属性中,以字典的形式记录变量与所批注的类型。
步骤4:运行案例代码,屏幕输出内容如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P92_80528.jpg?sign=1739297193-jm2tpf5DPzmxqYF7LjZE19IXdsBBqv3w-0-959c2dae3587e40dc93e1b44c056f3ae)
案例61 声明语句也是变量赋值
导语
Python代码在执行声明函数(使用def语句)和类(使用class语句)时,实际上也进行了变量赋值。函数或类的名称就是变量的名称,而变量引用的是函数或类的类型案例。在Python中,函数(包括lambda表达式)、类型(由type类描述)、方法等都被视为对象。
例如,下面代码声明了函数test。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P93_80530.jpg?sign=1739297193-LoM6CnTWqgaLVEGvEw1nfb2vpZUShhCR-0-37ce6b11ec962267dab6d06a3d4ad4ec)
在模块代码运行时,无论test函数是否被调用,def关键字所在的一行(即声明语句)都会被执行,而函数体(上面例子中的pass语句就是函数体)代码只有在函数被调用时才会执行。声明语句执行后,会在当前(模块)的名称空间中生成一个名为test的变量(与test函数名称相同),并把test函数的引用赋值给test变量。此过程类似于
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P93_80531.jpg?sign=1739297193-Fzp6ctCmjdRCUTk8BgRx1l9RFWbHQFU5-0-025cb6a78ebd72f23edb5b3aeb26380c)
赋值运算符(=)右边的test是函数引用,左边是变量名称,只是变量名与函数名相同而已。因此,还可以用其他变量去引用test函数,例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P93_80532.jpg?sign=1739297193-J0G6ktgkVARh3qle0LLYXQ8iVtIv0e95-0-145e0ce55cdd3934d896747d8b095c05)
赋值后,可以这样调用test函数
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P93_80533.jpg?sign=1739297193-H0EJFccIVVKukLKAG7fQVfxrHY3OvGzs-0-cafa9f3df568e54867fbe1a8b8932e91)
类似于为函数起一个别名。
对于类,也是相同的原理。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P93_80535.jpg?sign=1739297193-viK8fRQ1tlPz5a0bUGlKcskpxari2uAh-0-b668c2edd44a14f13b81e91271a0f5e1)
当案例化A类时,可以这样
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P93_80536.jpg?sign=1739297193-pkZmF3iuavnf13kDUCEOmX9X7yxY0nym-0-2751f7a45058d9c08c8fe51f7903763b)
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=1739297193-jKqWKfyezjjNS3OV0v6KixJhXFPN9qkf-0-7ca6d568c7e7fa57cb34ca292c19a72c)
对于当前模块的名称空间而言,此时全局变量中会存在一个名为num_sqr的变量,它引用了num_sqr函数,即变量名称与函数名称相同。
步骤2:再声明一个变量,让它也引用num_sqr函数。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P94_80539.jpg?sign=1739297193-7OsOScoHgCB0fQGsiRST79CIl6DUMV0u-0-0f7d7d416818059f28cb9921d72ca7fd)
步骤3:分别向屏幕打印num_sqr和sqr_c变量的值。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P94_80540.jpg?sign=1739297193-KLfqwWEtlLbwTzP4xTbJXgpDt4rx8n2m-0-d05138a2d48ae3cd012bf1fa199058c4)
当这两行代码执行后,屏幕上会输出以下内容:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P94_80541.jpg?sign=1739297193-8ymyal4VJ29pCe5XFabRngn5dd3rwBox-0-894c61afad9dcc2f258fb79f39e68eed)
从输出结果中可以看到,两个变量所引用的对象具有相同的内存地址,表明它们都引用了同一个案例——num_sqr函数。
步骤4:下面代码获取在全局变量中引用了num_sqr函数的所有变量。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P94_80542.jpg?sign=1739297193-frBLUicll2kDMpSsEzStSUyLqQTjKBlX-0-e6884c7d0324d88c14ff31112a9f3a95)
调用globals函数返回存储全局变量的字典,并筛选出value为num_sqr对象引用的子项(通过串联的if语句)。
得到结果如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P94_80543.jpg?sign=1739297193-hy8VOijYFxGIunFwVFzKAbUYYpAdzDLj-0-dbb7c6733f4789d9f52520025401355b)
案例62 as关键字与赋值
在import…或者from…import…语句后面,都可以使用as关键字对导入的对象进行重新命名(分配别名)。例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P94_80544.jpg?sign=1739297193-XnswFLxNgiEDuTTlbA87pnffquVCS7xV-0-943ddbb8c70c9898f6ec5c7bc898120a)
从some_module模块中导入fun1函数,然后用as关键字分配一个别名——fun2。此过程类似于声明了新的变量fun2并让它引用fun1函数。或者为导入的模块分配一个别名
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P94_80545.jpg?sign=1739297193-KZANhQ9Sr3jkW9Tk57LmGGZ7sYTB8Q74-0-8c51d052f21376fd56ca4c22410e1afd)
此过程相当于声明新的变量new_name,然后引用导入的some_module模块。
操作流程
步骤1:新建test_mod模块,在模块中声明trunc_str函数。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P95_80547.jpg?sign=1739297193-waiScsm9I4IIsruglMg0hs8NflShP3mq-0-c166fd3f78bdb60c323f4b398379e92b)
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=1739297193-UXGasUNKJiujaK54RHJCat3ubTAabtc1-0-a2dc0464e6404fc3ebf4c05feca07e9d)
步骤3:随后通过变量truncateStr就可以访问trunc_str函数。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P95_80549.jpg?sign=1739297193-ATEcqpcZip0Pw1KTqPlGaXknpaxG24oz-0-58410b7d1e171f0adcfeabcea8c3d934)
步骤4:运行案例代码,屏幕输出结果如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P95_80550.jpg?sign=1739297193-lewZYhnr00KsAZ8T4UpIGgyx75TZq1AO-0-9b90a26059af90735b44104b1577f684)
案例63 组合赋值法
导语
Python允许在一个赋值语句中同时初始化多个变量。例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P95_80551.jpg?sign=1739297193-Rs9aLVTmgNXgW9ahfzSEJfD7PTo0c9PR-0-d14ecbfd56231bc6d5aea241f83a688c)
相当于
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P95_80552.jpg?sign=1739297193-1yJECd59394TBpk4a2i6uVZmVyElDCq7-0-77ea4403861a4ea2691282424aa46bf1)
实际上,此赋值行为是对元组类型(tuple)的解包,即
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80554.jpg?sign=1739297193-a3ISX7eAzTRghgJAX9GQ3RHu0qNGGUU8-0-6d6e73f878b7656a47bcac330a43fc5e)
赋值运算符(=)右边是元组对象,一对小括号可以省略。赋值语句执行时,会从左到右依次提取出元组中的元素,逐个赋值给左边的变量列表。如上述代码中,7赋值给变量x,8赋值给变量y,9赋值给变量z。
但下面代码会发生错误。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80555.jpg?sign=1739297193-uRl2DFDmkEDXkTqHrPnYXEdvwGMOieqh-0-0ad0da656e1e2e128ef66b7dcbcdf910)
因为用于赋值的元组有3个元素,但接收的变量只有两个,在数量上不匹配。若是希望把1赋值给变量a,然后将剩余的2、3赋值给变量b,可以这样写
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80556.jpg?sign=1739297193-AL0tbph4JapQ6T4ZiOg6UWvmquuzKnXP-0-db7885ec90c28f5baa5d4c6a30ff1fc9)
赋值后,a引用整数值1,b引用了一个列表对象,列表中包含2、3两个整数值。
操作流程
步骤1:用两个浮点型数值来初始化两个变量。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80557.jpg?sign=1739297193-ShTAjebzoe4o3Zf7aVWW4GmA0jkRptCy-0-1d1fc781e60f4020e05e414eab958543)
步骤2:用于初始化的变量值也可以是不同类型的。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80558.jpg?sign=1739297193-RHM11Mn9e5Xk3SogzxTcPqcpgUHXpnem-0-391a9ca772a0c7d28c166b7f531339bc)
步骤3:用4个字符串对象案例化3个变量,其中,s1、s2依次引用前两个元素,sn引用剩下的两个元素。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80559.jpg?sign=1739297193-7cg7O7Ux3Enc5j6zrIEscSCyqHaA4drQ-0-a22dd287f25fba675054650ed9751d51)
步骤4:输出各个变量的值。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80560.jpg?sign=1739297193-T0BtIju4lXAgCbJuNQpjYY4Jcc79izbK-0-65a376ccaaf12b38707417c6f8d59876)
步骤5:运行案例代码,输出结果如下:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P96_80561.jpg?sign=1739297193-SSMzEMCnKXg3SQ8Rn7n5OT3PM8eObXKs-0-5391bf6deb6621a6f8351814bb18a181)
注意:sn变量使用列表类型(list)来存储剩余的两个变量值,之所以使用列表类型,是为了允许代码修改sn变量中所包含的元素。
案例64 组合赋值与表达式列表
导语
组合赋值语句的实质是在赋值运算符(=)的两边各放置一个表达式列表。常规情况下,赋值运算符两边的表达式个数应当相等,并且从左到右依次赋值。例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P97_80564.jpg?sign=1739297193-GNDN49yi9wrYAVhNRGzcfhn0BxiWPQFw-0-9cf749e0aaf955cc6f16837bf02c9e04)
赋值运算符两边的表达式列表实为元组对象,因此,上述代码可以写成
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P97_80565.jpg?sign=1739297193-9TqJT7h0ue663W4JKn8S46oyT7TnxTqt-0-24921ed6b0a0e54104b6acc43e617471)
或者,还可以这样写
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P97_80566.jpg?sign=1739297193-p61Zwod9QIttP6nRtqHipNridJrhrhsJ-0-0b4931ba7a3a9c2f5381f54a3164e45b)
使用列表(list)的格式来进行组合赋值也是允许的,例如:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P97_80567.jpg?sign=1739297193-GDNxypOPxlWIL33HimC8rsdyX01pXknu-0-9c63a366a06531a590a12cc87a460423)
以下赋值语句,左边是列表格式,右边是元组格式,这种情况也是允许的。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P97_80568.jpg?sign=1739297193-esLyJLVxCiW6414OqElPf0AKhE0uTNfB-0-ccb74a12a4d1fe5d98a939382144dd3a)
如果赋值运算符两边的元素个数不相等,会发生语法错误。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P97_80569.jpg?sign=1739297193-b60V3dATcU6RKKYMDoVgY6POInytE4bA-0-cfb25deb8c5a5411c9cfba053142bef4)
第一行代码中,左边有两个变量,而右边有三个值;第二行代码则相反,左边有三个变量,右边有两个值。
变量名称前可以加上星号(∗),表示该变量接收多个值。这些值是从序列对象(列表、元组等)中“解包”(unpack)出来的,然后组合为新的序列赋值给带星号的变量。请看下面代码。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P98_80571.jpg?sign=1739297193-dYngoxNnnNoZkQl69QxAeA2yFLKSDh0f-0-72fbbab4fc69273c4c114db56a6a7f5e)
上面代码先将字符“a”赋值给变量a,再把剩下的字符“b”和“c”组成新的列表赋值给变量b。把顺序反过来也是可行的。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P98_80572.jpg?sign=1739297193-bybjElCY6FTPMSLHQ9YXP0BdgfmjqhYk-0-13d35344db5b494be4d7d10918dd0546)
此时,变量a前面带有星号,赋值过程为:先将最后一个字符“c”赋值给变量b,再将剩下的两个字符“a”和“b”组成新的列表赋值给变量a。
但是,同一个变量列表中不能出现多个带星号的变量,下面语句会发生错误。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P98_80573.jpg?sign=1739297193-q2mnA56dNAyxGrjGcvMdJ03hd5FtYDVd-0-1140266fad2f8294695d42c891291643)
因为带星号的变量所引用的值列表在元素个数上是不确定的,同时使用多个带星号的变量,会导致赋值运算符右边的值列表无法进行准确的分配。
如果赋值运算符左边只有一个变量,也是可以使用带星号的变量的,以下三条语句都是有效的。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P98_80574.jpg?sign=1739297193-n4wQmDUmF6iABU7GfhD7C6T7ITGWRcty-0-47677989147b969f74c4983ce2b137c7)
第一行与第二行都是把变量列表组成元组对象,由于第一行中省略了小括号,所以变量后面要加上一个逗号,表示x不是单个值,而是一个元组。第三行代码中变量x表示一个列表对象。
综上所述,不管是赋值语句的左边还是右边,表达式列表可以包装为元组(tuple)和列表(list)两种序列格式。
操作流程
步骤1:声明n1、n2、n3三个变量,并进行组合赋值。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P98_80575.jpg?sign=1739297193-NCI3wBGLFifgOBziewb8GGJmpWO99bQm-0-a870f6bd31de0435f9a24e8ece78aa16)
此赋值语句中,赋值运算符两边的表达式列表均为元组结构。
步骤2:声明m1、m2、m3变量,并用五个浮点数值赋值。
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P98_80576.jpg?sign=1739297193-WfwazFs1RGIb1686JR68QPomvmhcUitL-0-187e4d3dbb97280f5be2af099b6a08d5)
此语句先将数值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=1739297193-xGqsLJxUqOhQRbeByHXuXhqiazFwZqul-0-3fdf3ec690a6aefba725d16ee630b7f7)
此语句与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=1739297193-kOxVLgbNFTLefSeTW6uS8e3M5pC3LAsE-0-55d0e093e8fa94ce81ddd5e2fba04eac)
步骤5:运行案例代码,屏幕将输出以下内容:
![](https://epubservercos.yuewen.com/1C5115/23721740309681106/epubprivate/OEBPS/Images/Figure-P99_80580.jpg?sign=1739297193-S4Ew1iibyiqxFLyuLgBfj8hweLtKm83K-0-c121df1a7cd483ecb776508b3c2957b1)