文章简介
这篇文章我会把python入门学习的经验,以及心得分享出来,其中内容不少是我在学习中的一些笔记,与大家分享,希望用这种文字的方式,能让大家快速了解这门编程语言,或者对这门语言产生兴趣以及学习的入门方式。一个人想学习任何的技术或者知识,只要你想学,能坚持的去学习,在这个世界上根本就不存在学不会的,以本人水平为例,我的水平只是一个**文凭,很多人会说这种人不可能学得会编程,其实非也,因为爱好的执行力很强,睡觉做梦都会去思考这个事情,坚持不懈的去研究,其实都一样都能学得会,我从接触互联网至今从未把一种技术当做功利性去学习,仅是对它的好奇心和兴趣,因为好奇,研究它的动力就很强,正好遇到了它几年后流行,就用得上了。也就是一直把学习作为主动,至于是否赚钱是被动的。哪怕学了不赚钱也不会因为学习这门编程语言而后悔,最起码它能为我个人的工作中提供很多的帮助。
现在ChatGPT已经非常热门,对于我这种自学编程语言来说真是大大的福利了,因为我几乎遇到不懂的问题,或者很难的问题不需要去请教大佬,我会把我的想法告诉它,把不懂没有学明白的问题讲给它听,自然会得到解决办法,效率高还不会嫌我啰嗦,同时也建议大家都去使用这类工具,会对我们的学习有非常大提升。
每天抽空就会写一点,持续更新的文章。
Python简介
python是著名的“龟叔”Guido van Rossum 在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。最初Python只是一个项目,没想到后来竟然发展壮大,成为如今举世知名的编程语言。直到2023年6月Python在TIOBE排行榜已经成为流行度榜首。
牛人就是牛人,为了打发无聊的时间竟然写了一个这么牛的编程语言。
以下是2023年6月编程语言TOP20榜单。
排名 | 编程语言 | 流行度 | 对比上月 | 年度明星 |
---|---|---|---|---|
1 | Python | 12.46% |
-0.99%
|
2021, 2020 |
2 | C | 12.37% |
-0.98%
|
2019, 2017 |
3 | C++ | 11.36% |
-0.6%
|
2022, 2003 |
4 | Java | 11.28% |
-0.94%
|
2015, 2005 |
5 | C# | 6.71% |
-0.72%
|
– |
6 | Visual Basic | 3.34% |
-0.5%
|
– |
7 | JavaScript | 2.82% |
0.38%
|
2014 |
8 | PHP | 1.74% |
0.15%
|
2004 |
9 | SQL | 1.47% |
-0.01%
|
– |
10 | Assembly language | 1.29% |
0.09%
|
– |
11 | Delphi/Object Pascal | 1.26% |
0.25%
|
– |
12 | MATLAB | 1.11% |
0.23%
|
– |
13 | Scratch | 1.02% |
0.07%
|
– |
14 | Go | 1.00% |
0.01%
|
2016, 2009 |
15 | Fortran | 0.99% |
0.21%
|
– |
16 | Classic Visual Basic | 0.96% |
0.21%
|
– |
17 | R | 0.94% |
0.12%
|
– |
18 | Ruby | 0.94% |
0.14%
|
2006 |
19 | Swift | 0.93% |
0.02%
|
– |
20 | Rust | 0.91% |
0.09%
|
– |
TOP10编程语言TIOBE指数走势(2002-2023)
总的来说这些编程语言各有千秋,但不难看出,最近几年的Python发展速度非常快,特别近几年流行的机器学习,数据分析,自动化测试、爬虫等更让Python快速的发展起来。
Python是高级编程语言,它有一个特点就是能快速的开发。Python为我们提供了非常完善的基础代码库,涵盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用Python开发,功能不必从零编写,直接使用现成的即可。而且Python还能开发网站,很多大型网站就是用Python开发的,例如youtube、instagram,还有国内的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美国航天局)都大量的使用Python。
当然,任何一种编程语言都有优缺点,Python也不例外。
缺点一:运行速度慢,和C程序相比它非常慢。因为Python是解释性语言,你的代码在执行时会一行一行的翻译成CPU能理解的机器码,这个翻译的过程相比C程序非常耗时,所以它比C程序慢,而C程序是运行前直接编译成CPU能执行的机器码,没有解释翻译的过程,所以C程序就非常快。
缺点二:代码不能加密。如果你发布你的Python程序,实际上就是发布源代码。像JAVA,C这些编译型语言,都没有这个问题,而解释型语言,则必需把源码发布出去。
对于如今缺点的解释如下
速度缺点并非致命性的,其中运行速度慢的情况主要出现在大量计算的场景,在日常脚本以及wbe等方面,速度完全是够用,我们只是说相对于C程序。随着Python解释器不断地优化,速度也在不断地提高,3.x和2.x相比已经大幅提升。对于计算密集型任务,可以采用Python于C交互的方式来来有效提升速度。
加密对许多用户来说不太重要,对于需要保护的用户,可以采用混淆编码或者外部函数等方式,有效增加反编译的难度,也可以用Cython将PYthon代码编译为加密的字节码。
学习的目的和动力
IT行业相对于一般传统行业,因为发展速度太快,一旦停止了学习,很快就会被行业所淘汰,但是我们要清楚,淘汰的永远只是那些初级水平的从业者,技术过硬的从业者永远都是稀缺的。因此对于学习,我们还是要踏踏实实的。
自学Python也是一样的,不要一开始因为头脑发热就不停地收藏各种资料网站,购买各种书籍,下载了大量的教学视频,过了几天,学习的热情开始褪去,再过几个星期,终于完成了学习课程——《从入门到放弃》。所以学习Python需要一步一个脚印踏踏实实的去学,一分耕耘一分收获,当然了有时候耕耘也不一定有收获。
学习编程最好的动力是:爱好,因为爱好不会去关心收入,目的只有成就感和责任感。你并不会因为市场不景气,或者其他外在原因导致你半途而废,你并不会找不到工作而不去学习,在我认识程序员当中的大佬们,那些真正稀缺的大牛们,内心对未知的好奇,喜欢探索,而不是功利性的学习,当然我说的这个并非绝对,仅供参考。
当然了,成年人基本都是功利性较大,得考虑收入养活家庭,不管哪种目的也好,我们都需要把这件事给想清楚,到底自己属于功利还是爱好,然后去指定自己的学习计划。
Python安装
python是跨平台的,它可以运行在Windows/Mac/Linux/Unix系统上。目前Python有两个版本,一个是2.x版本,一个是3.x版本,这两个版本是不兼容的。我安装的是3.10.6版本。
Windows系统下安装配置
点击Downloads
对应选择自己的操作系统Windows
选择安装程序64位,点击进行下载安装包。因为版本太多你可以通过Ctrl+f来进行快速找到对应版本进行下载。
如果是Windows系统,下载安装包后直接勾选Add Python 3.10 to PATH
,然后点击Install Now
即可完成安装。
如果你一时手快,忘记勾选Add Python 3.10 to Path也没问题,只需要手动配置一下环境变量就OK。
在命令提示框中cmd输入:
path=%path%;C:\Python
特别要注意:C:\python
是python的安装目录,如果你的安装目录是其他路径,就得对应填写。
安装完毕后,打开命令提示符,输入python
回车后,出现下面的信息,证明python安装成功,
而你看到提示符>>>
就表示我们已经在python交互式环境中了,可以输入任何python代码,回车后会立刻得到执行结果。
Mac系统安装配置
MAC系统一般都自带了Python2.x版本的环境,不过现在都不用2.x的版本了,所以直接在python官网下载最新版本即可。
先查看当前环境变量
echo $PATH
然后打开~/.bash_profile(没有请新建)
vi ~/.bash_profile
我装的是python3.7,python路径为:/Library/Frameworks/Python. Framework/Versions/3.7/bin
于是写入
export PATH="/Library/Frameworks/Python. Framework/Versions/3.7/bin:$PATH"
最后保存退出,激活运行一下文件:
source ~/.bash_profile
第一个Python程序
现在我们就来写第一个Python程序了,一开始写Python程序,个人不太建议用专门的工具来写,不方便熟悉语法,所以这里我先用Sublime Text来写,后期熟悉了可以改为用PyCharm。
第一个Python程序当然是打印Hello Python啦。
如果你没有编程经验,什么都不懂,第一个Python程序,只要跟着做,留下一个印象,尝试一下就OK。
Sublime Text
用Sublime Text新建文件,右下角设置为Python
输入print('Hello Python')
按Ctrl+s
保存文件至自定义目录。命名为print('Hello Python').py
,注意是以.py
为后缀的文件。
最后我们按Ctrl+B就可以直接运行了,运行结果如下。
集成开发环境(IDE)PyCharm
我本人一直是建议在学习周期使用文本编辑器或者是Sublime Text 这个工具来写 Python 程序的,因为这样有利于我们了解整个流程。
当然,如果你有一定的编程基础,是可以使用集成的开发环境的,这样基本数据类型和变量可以提高效率。这时,你可以选择 PyCharm ,PyCharm 是由 JetBrains 打造的一款 Python IDE,支持 macOS、 Windows、 Linux 系统。
PyCharm 下载地址 : https://www.jetbrains.com/pycharm/download/
集成开发环境(IDE)VScode
VS code下载地址:https://code.visualstudio.com/
基本数据类型和变量
Python语法简要说明
每种语言都有自己的语法,不管是自然语言(英语/中文)还是计算机编程语言。
Python也不例外,它也有自己的语法规则,然后编辑器或者解释器根据符合语法的程序代码转换成CPU能够执行的机器码,然后执行。
Python的语法比较简单,采用缩进方式。
如上图的代码截图,以#开头的语句是注释,其他每一行都是语句,当语句以冒号:结尾时,缩进的语句视为代码块。
要主要的是Python程序是分大小写的,如果写错了程序也会直接报错。
print()函数
这里先说一下print()
函数,如果你是新手,可能对函数不太了解,没关系,这里你只要了解他的组成部分和作用就可以了,后面函数这一块会详细说明的。
print()函数由两部分构成:
- 指令:print
- 指令的执行对象,在print后面的括号里的内容
而print()
函数的作用是让计算机把你给它的指令结果显示在屏幕的终端上。这里的指令就是在print()
函数里的内容。
比如在上一章节中我们第一个Python程序,打印print('Hello Python')
它的执行流程如下
- 读取代码:计算机读取我们编写的Python代码print(‘Hello Python’)。
- 分析代码:计算机分析代码,把代码分解成一个个词素,比如print和’Hello Python’。
- 转换代码:计算机将这些词素转化成它自己能理解的形式。
- 执行代码:计算机按照转换后的代码一个个地执行,遇到print,就打印出’Hello Python’。
- 显示结果:计算机将打印的’Hello Python’显示在屏幕上。
- 结束运行:计算机运行完成,整个程序结束。
可能有人会问,为什么要加单引号,直接print(Hello Python)
不行吗?
如果你写代码过程中,有这样疑问,直接写一下代码,自己验证一下是最好的。
显然,去掉单引号后,运行结果就会报错,证明这是不可以的。
主要是因为这不符合Python的语法规则,去掉单引号后,Python解释器根本没办法看懂你写的是什么。
所以就报SyntaxError:invalid syntax的错误,意思是:语法错误。说明你的语句不合规则。
命名规范
模块
模块尽量使用小写命名,首字母保持小写,尽量不要用下划线(除非多个单词且数量不多的情况)
# 正确的模块名 import decoder import html_parser # 不推荐的模块名 import Decoder
类名
类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头
class Farm(): pass class AnimalFarm(Farm): pass class _PrivateFarm(Farm): pass
将相关的类和顶级函数放在同一个模块里,不像Java,没必要限制一个类一个模块.
函数
函数名一律小写,如有多个单词,用下划线隔开
def run(): pass def run_with_env(): pass
私有函数在函数前加一个下划线_
class Person(): def _private_func(): pass
变量名
变量名尽量小写,如有多个单词,用下划线隔开
if __name__ == '__main__': count = 0 school_name = ''
常量采用全大写,如有多个单词,使用下划线隔开
MAX_CLIENT = 100 MAX_CONNECTION = 1000 CONNECTION_TIMEOUT = 600
常量
常量使用下划线分割的大写命名
MAX_OVERFLOW = 100 Class FooBar: def foo_bar(self, print_): print(print_)
注释
块注释
“#”号后加一个空格,段落件用空行分开(同样需要’#’号)
# 块注释 # 块注释 # # 块注释 # 块注释
行注释
至少使用两个空格和语句分开,注意不要使用无意义的注释
# 正确的写法 x = x + 1 # 边框加粗一个像素 # 不推荐的写法(无意义的注释) x = x + 1 # x加1
建议
- 在代码的关键部分(或比较复杂的地方)能写注释的要尽量写注释
- 比较重要的注释段,使用多个等号隔开,可以更加醒目,突出重要性
app = create_app(name, options) # ===================================== # 请勿在此处添加 get post等app路由行为 !!! # ===================================== if __name__ == '__main__': app.run()
文档注释
作为文档的Docstring一般出现在模块头部,函数和类的头部,这样在Python中可以通过对象的_doc_对象获取文档.编辑器和IDE也可以根据Docstring给出自动提示
文档注释”””开头和结尾,首行不换行,如有多行,末行必需换行,以下是Google的Docstring风格实例
# -*- coding: utf-8 -*- """Example docstrings. This module demonstrates documentation as specified by the `Google Python Style Guide`_. Docstrings may extend over multiple lines. Sections are created with a section header and a colon followed by a block of indented text. Example: Examples can be given using either the ``Example`` or ``Examples`` sections. Sections support any reStructuredText formatting, including literal blocks:: $ python example_google.py Section breaks are created by resuming unindented text. Section breaks are also implicitly created anytime a new section starts. """
不要在文档注释复制函数定义原型,而是具体描述其具体内容,解释具体参数和返回值等
# 不推荐的写法(不要写函数原型等废话) def function(a, b): """function(a, b) -> list""" ... ... # 正确的写法 def function(a, b): """计算并返回a到b范围内数据的平均值""" ... ...
对函数参数、返回值等的说明采用numpy标准,如下所示
def func(arg1, arg2): """在这里写函数的一句话总结(如: 计算平均值). 这里是具体描述. 参数 ---------- arg1 : int arg1的具体描述 arg2 : int arg2的具体描述 返回值 ------- int 返回值的具体描述 参看 -------- otherfunc : 其它关联函数等... 示例 -------- 示例使用doctest格式, 在`>>>`后的代码可以被文档测试工具作为测试用例自动运行 >>> a=[1,2,3] >>> print [x + 3 for x in a] [4, 5, 6] """
- 文档注释不限于中英文,但不要中英文混用
- 文档注释不是越唱越好,通常一两句话能把情况说清楚即可
- 模块、公有类、公有方法,能写文档注释的,应该尽量写文档注释
Python的基本数据类型
字符串
字符串英文string是Python中随处可见的数据类型,字符串的识别也非常的简单,就是用它[引号]括起来的。
引号包括单引号' '
双引号" "
和三引号''' '''
,比如'abc'
,"123"
等等。
这里请注意,单引号' '
或双引号" "
和三引号''' '''
本身只是一种表示方式,不是字符串的一部分,因此字符串'abc'
只有a,b,c这三个字符。
如果善于思考的你,一定会问?
为什么要有单引号' '
,双引号" "
和三引号''' '''
啊,直接定死一个不就好了,搞这么麻烦干什么?
是的,一般来说一种语法只用一个规则来表示是最好的,竟然现在字符串有三种不同的表示,证明是有原因的。
那么我们先看一下这三种方式,来定义同样内容的字符串,再把它打印出来,看看是怎样的。
可以看到,打印的结果都是一样的。
可是如果我们想要在打印的内容中包含引号呢?例如两'点'水
这样呢?
我们可以看到结果,直接就给报错了。
这个时候,双引号的作用就来了。可以看到打印的结果也跟预期是一样的。
至于三引号,也是同理,要打印双引号内容时,就需要用三引号''' '''
那么用单引号,双引号定义的字符串就不能表示这样的内容吗?
并不是的,你可以使用转义字符。
比如单引号,你可以使用\'
来表示,双引号可以用\"
来表示
这里请注意,这里的是反斜杠\
并不是斜杠/
了解之后,直接程序测试一下:
最后也提示一下,三引号”’ ”’是直接可以分行的。
整数
整数英文为integer。代码中的整数跟我们平常认识的整数一样,包括正整数、负整数和零,是没有小数点的数字。
Python可以处理任意大小的整数,例如:1
,100
,-6060
,0
,等等。
当然要注意,如果数字你用引号括起来了,那就属于字符串了,而不适于整数。比如'100'
,这个100是字符串,不是整数。
在现实世界中,整数我们通常会做计算,因此代码世界也是一样,整数可以直接加减乘除。
比如:
这里提醒大家,看看上面的例子,有没有发现什么?
看一下int4
打印出来的结果,是0.5
,是一个小数。
而我们上面对整数的定义是什么?
是没有小数点的数字。
因此int4肯定不是一个整数。
这里我们可以使用type()
函数来查看它的类型。
可以看到int4
是float类型,而int1
,int2
,都是int整数类型。
那么float是什么类型呢?
float是浮点数类型,是我们下面会说到的。
在说浮点数之前,各位可以看一下Python的算术运算符都有哪些,有个印象。
浮点数
浮点数的英文名是float,是指带小数点的数字。
浮点数跟整数有很多类似的地方,但是浮点数是最折磨人的,也是最难让人琢磨透的。
就好比世界级的大佬Herb Sutter说:「世上的人可以分为3类:一种是知道自己不懂浮点运算的;一种是以为自己懂浮点运算的;最后一种是极少的专家级任务,他们想知道自己是否有可能,最终完全理解浮点运算。」
为什么这么说呢?
看下面这个例子,像整数一样,只是基本的浮点数加法运算。
这个运算结果对于初学者来说,可能会接受不了。
对于第一个还好,0.55+0.41等于0.96,运算结果完全一致。可是后面两个,你会发现怎么出现了那么多个零。
这是因为计算机对浮点数0.1和0.4不能准确的表示,计算机会使用近似值进行存储。保存在计算机中的是二进制数,二进制对有些数字不能准确的表达,只能非常接近这个数。
所以我们在对浮点数做运算和比较大小的时候就要小心了。
布尔值
布尔值和布尔代数的表示完全一致,一个布尔值只有True
、False
两种值,要么是True
,要么是False
,在Python中,可以直接用True、False表示布尔值(注意大小写),也可以通过布尔运算计算出来。
布尔值可以用and
、or
、not
运算
and运算是与运算,只有所有都为True,and运算结果才是True
or运算是或运算,只要其中有一个为True,or运算结果就是True
not运算是非运算,它是一个单目运算符,把True变成False,False变成True
需要注意,and、or、not有优先级关系:not最高,然后是and,or最低。这个会影响复合判断的结果。
布尔值在编程中有着重要的意义,作为基础数据类型,是实现程序逻辑和流程控制的核心工具。
True代表“真”,表示一个条件为真,结果为肯定的情况。
False代表“假”,表示一个条件为假,结果为否定的情况。
2 > 1 返回True,因为2确实大于1,这个条件判断为真
1 == 2 返回False,因为1不等于2,这个条件判断为假
空值
基本上每种编程语言都有自己的特殊值——空值,在 Python 中,用 None 来表示。
None表示无值,可以把它看成一个空对象。当一个变量被赋值为None时,它就变成一个空值,不再指向任何对象。例如:
所以Python中的None表示空值,类似于其他语言中的null、nil等概念。但是它只有一个值None
字符串的编码问题
我们都知道计算机只能处理数字,如果要处理文本,就必需先把文本转换为数字才能处理。最早的计算机在设计时用8个比特(bit)作为一个字节(byte),所以一个字节表示的最大的整数就是255(二进制11111111=十进制255),0-255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大小写字母A的编码是65,小写字母z的编码是122.
如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以中国制定了GB2312编码,用来把中文编进去。
类似的日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有编码乱码的问题了。
Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为0就可以了。
我举一个例子:
以字母’A’为例:在ASCII编码中,’A’用1个字节表示,二进制代码是:0100 0001在Unicode中,’A’需要2个字节表示,变成:0000 0000 0100 0001
因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串’abc’在Python内部都是ASCII编码的。
Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'
表示
不过在最新的Python 3 版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言。就像上面的例子一样,我的代码中没有u'...'
,也能正常显示。
不过由于Pyhton源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3 # -*- coding: utf-8 -*-
第一个注释是为了告诉Linux/OS X系统,这是一个Python 可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
申明了UTF-8 编码并不意味着你的.py文件就是 UTF-8编码的,必需且要确保文本编辑器正在使用 UTF-8 without BOM编码。
基本数据类型转换
python中基本数据类型转换的方法有下面几个。
方法 | 说明 |
---|---|
int(x [,base ]) | 将x转换为一个整数 |
float(x ) | 将x转换到一个浮点数 |
complex(real [,imag ]) | 创建一个复数 |
str(x ) | 将对象 x 转换为字符串 |
repr(x ) | 将对象 x 转换为表达式字符串 |
eval(str ) | 用来计算在字符串中的有效 Python 表达式,并返回一个对象 |
tuple(s ) | 将序列 s 转换为一个元组 |
list(s ) | 将序列 s 转换为一个列表 |
chr(x ) | 将一个整数转换为一个字符 |
unichr(x ) | 将一个整数转换为 Unicode 字符 |
ord(x ) | 将一个字符转换为它的整数值 |
hex(x ) | 将一个整数转换为一个十六进制字符串 |
oct(x ) | 将一个整数转换为一个八进制字符串 |
注意:在Python 3 里,只有一种整数类型int,表示为长整型,没有 python 2 中的 Long。
这里我们可以尝试一下这些函数方法。
比如int()函数,将符合规则的字符串类型转化为整数。
注意:这里是符合规则的字符串类型,如果文字形式等字符串是不可以被int()函数强制转换的。因为int是整数型,只有整数才能使用这个函数。其中也包含了浮点数的字符串也是不能用int()函数转换的。
但是这并不意味着浮点数不能转化为整数,而是小数形式的字符串不能强转为字符串。
浮点数还是可以通过int()函数转换的。
但是你会发现,结果是15,后面的小数点0.52被去掉了。
这是因为int()函数是将数据转为整数。如果是浮点数转为整数,那么int()函数就会做取整的处理,只取整数部分。所以输出的结果为15.
其余的方法就不一一列具,只要多用,多试,这些方法都会慢慢熟悉,还有如果是初学者,完全可以每个方法都去玩玩试试,写一写,随便写,然后看运行结果,反正电脑也不会折腾坏。
Python中的变量
变量的创建和赋值
在Python程序中,变量是用一个变量名表示,可以是任意类型的数据,变量名必需是大小写英文、数字、下划线(_)的组合,且不能用数字开头,比如:
a=88
这里的a就是一个变量,代表一个整数,注意一点是Python是不用生命数据类型的。 在Python中=
是赋值语句,跟其他的编程语言也是一样的,因为Python定义变量时不需要声明数据类型,因此可以把任意数据类型赋值给变量,且同一个变量可以反复赋值,而且可以是不同的数据类型。
这种变量本身类型不固定的语言称之为动态语言,预支对应的是静态语言,静态语言在定义变量时必需指定变量类型,如果赋值的时候类型不匹配,就会报错,例如Java是静态语言。
变量的指向问题
我们来看一下这段代码,发现最后打印出来的变量b是Hello Python
这主要是变量 a 一开始是指向了字符串Hello Python
,b=a
创建了变量b,变量b也指向了a指向的字符串Hello Python
,最后a=123
,把变量a重新指向了123
,所以最后输出变量b是Hello Python
如果再简单的说就是最终结果显示b的赋值,而b=a,默认第一次出现的a,至于第二次出现的a是a的问题,和b没任何关系。所以结果就是b=第一次出现的aHello Python
我做一张图,你会再次理解它的执行原理。数字代表执行的的次序,最后的a被重新赋值,和B一点关系没有。
我们再加一个print(a),就更加理解了这个原理。最后的打印命令的位置,也会影响它们的打印结果。
多动手尝试有利于我们更加理解它的原理,不要害怕敲错,就算是一个成熟的程序员每天也会出错。错误是我们成长的老师,多试错。
多个变量赋值
Python允许同时为多个变量赋值,例如:
a = b = c = 1
以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。
当然也可以为多个对象指定多个变量,例如:
a,b,c = 1, 2, "laotie"
以上实例,两个整型对象1和2的分配给变量a和b,字符串对象”laotie”分配给变量c
评论前必须登录!
立即登录 注册