说明,以下是我翻译的Python官方免费英文材料,是个很好的入门读物。如果需要英文版,请到(Mark学编程QQ群下载,或留言与我联系索取)希望反馈提出意见,供修改中文翻译稿时参考。
还有一个说明,下面的例子都是Python3的,图片中的例子是Python3.7,用的Pycharm.
基础
仅仅打印“hello world”是不够的,是不是?你需要做的更多,比如,你要接收一些输入,操纵它们,并且从中得到一些什么。我们可以通过Python的常量和变量来达成这些目标,这一节我们还将学习一些其他概念。
注释:
注释是写在#符号右边的文本,主要用于作出注释,以方便读者理解程序。(仅限一行,如果另起一行,可再加#--译者加);
比如:
print(‘hello world’) # 注意,print是个函数
或者
# 注意,print是个函数
print (‘hello world’)
在你的代码程序中尽量多使用注释:
解释假设
解释重要决定
解释重要细节
解释你需要解决的问题
解释你需要在程序中克服的困难
代码告诉你如何做,注释应当告知你为什么
注释对程序读者来说是有用的,这样他们可以很容易的理解程序在做什么,记住,这个读者也可能是6个月后的你自己。
常量
一个常量的例子是数字,比如 5, 1.23 或者象这样的字符串:‘This is a sting’ 或者(双引号) “This is a string”
数字5永远是数字5,没有别的,所以在英文里叫做literal,顺便说一句,编程书籍里,英文喜欢用literal,我们不用管它。常量叫做常量,是因为它的值是不变的,所以,上面举的例子都是literal 常量。(注意,此段翻译,已经脱离了原文的意思,主要是为了通俗易懂,帮助理解常量—译者)
数字
数字主要属于两个类型 – 整型和浮点型。
一个整形的例子是2,它就是单纯一个数字。
浮点数字的例子有: 3.23;52.25等等。E概念表示10的几次方,比如,52.3E-4 就是 52.3 * 10^-4^。
字符串
字符串就是一系列字符的序列。字符串基本上就是一串单词。你会在Python中,几乎每一个要写的程序使用字符串,所以要特别留意下面的部分。
单引号
你可以用单引号标示字符串,比如 ‘Quote me on this’。
所有的空格,例如空间和标签,在引号内按照原来的样子保留。
双引号
双引号中的字符串和单引号一模一样的功能时一样的机制,例如:”What’s your name?”。
三引号
你可以用三引号来指定多行字符串,在其中,你可以自由使用双引号和单引号。举例:
‘’’This is a multi-line string. This is the first line.
This is the second line.
“What’s your name?,” I asked.
He said “Bond, James Bond.”
‘’’
字符串是不可变的
一旦你创建了字符串,你就不能变动它了。也许这样显得不好,但其实相反,我们会在后面见证,在不同程序中(固定不变)为什么不是一种限制。
格式化方法
有时候,我们需要从其他信息中创建字符串,这就是format ( ) 方法的用处。比如下列代码:
age = 20
name = 'Swaroop'
print ('{0} was {1} years old when he wrote this book' . format (name, age))
print ('Why is {0} playing with that python?' . format (name))
(代码的输出,我不放在这里,是要鼓励你在电脑上运行代码看结果,如果确实必要,你就到英文版看结果)并且运行原理的解释,我不一定按照英文的照搬,会根据我们的特点加以改编,请注意。
代码运行原理
字符串可以使用format方法,用相应的实参填充大括号中的空白。请看第一个{0},它对应变量name, 方法中的第一个实参。同样的,第二个{1}对应age。 请注意,Python是从0开始计算的,这也是计算机界的惯例。所以,第一的位置索引是0,第二个是1,然后继续。(译者加注:初学者遇到不明白的术语,不要捉急,先记下来,后来慢慢会明白,确实需要的,请到QQ群(Mark学编程)问询。)
当然,我们也可以用下面的方法达到同样的连接字符串的目的:
name + ‘ is ‘ + str(age) + ‘ years old’
这显得比较丑,也容易出错。另外,用format方法,类型转换成字符串是自动的,不需要刻意的转换,还有,用format我们可以直接改变信息,而不需要处理变量,反之亦然(译者没有搞懂这句话,就直接翻译了。)。
特别的,我们可以不使用大括号内的数字,所以,你可以这样写代码:
age = 20
name = ‘Swaroop’
print (‘{ } was { } years old when he wrote this book’ . format ( name, age )
print (‘why is { } playing with that python?’ . format(name)
关于输出上面已经说过,不放在这儿,需要你自己练习。(也可能你不会按照Python或者需要使用像Pycharm这样的编辑器,到网上查找如何安装吧,或者到万能的QQ群(Mark学编程))
我们还可以这样写:
Print (' {name} was {age} years old when he wrote this book' . format (name=name, age=age))
print('Why is {name} playing with that python?' . format ( name = name))
输出结果和前一个一样。
Python 3.6 引入了新的方式,更短的方式。详见下面:
Print ( f' {name} was {age} years old when he wrote this book')
Print ( f' Why is {name} playing with that python?')
注意 f 在字符串的前面。输出结果和前面的一样。
(译者感慨)
竟然还有更细致的format方式,略去不翻译了。感觉初学者用不着。有兴趣的看英文原文。
因为刚刚讨论了格式化,那么我们也谈谈print,print总是用看不见的“新行”字符(\n)结尾,所以连续调用print总是开始一个个新行。如果防止新行出现,那么可以用下面的方式,在括号内后面加上:
print (‘a’, end=’ ‘)
print (‘b’, end=’ ‘)
输出 ab
如果你不小心将 ‘ ’空格放大的话,试试看会是什么?
转义符号
设想你有一个字符串,像这样的,”What’s your name?” 你不能在单引号内加单引号,比如 ‘What’s your name?’,是要报错的(编辑器会返回错误提示信息,简称报错--译者注)。因为Python遇到这个会晕,不知道从哪里开始,哪里结束。所以,你要用 ‘\’ 叫做转义符的东西。这样就可以了— ‘What\‘s your name?’; 当然,双引号内可以有单引号。如果是双引号内双引号,那就需要转义符。其他的例子不再举了,这种东西,多加观察和练习就行了。还有下面的这个,容易被忽视:
“This is the first sentence. \
This is the second sentence.”
其实就相当于一行。输出会是一行。
变量
仅仅使用常量很快就变的单调乏味,我们需要一种方式存储信息(数据),并且也能够操控他们。这就是变量出场的时候了。变量名副其实,它暗示它的值是变化的。你可以用变量存储任何东西。变量就是计算机的部分内存,在那里你存储信息。不像常量,你需要一些方法来访问变量,所以,你需要给他们一一命名。
标识符命名
变量是标识符的(典型)例子,标识符就是一些名字,用于标示某些东西。有如下的命名规则。
标识符名称第一个符号需要是英文字母或者下划线;
其后的字符包括英文字母,下划线,以及数字都可以;
标识符名称大小写敏感, myname 和 myName 不一样。
有效的名字包括,i, name_2_3; 非法名有 2things, my-name; >a1b2_cs; this is spaced out 等。(这个没有准备翻译,但大体意思没有问题,请多加模仿标识符命名,而不是单纯记忆。)
数据类型
变量能够包含(hold)不同的类型的值、类型就是数据类型。基本类型包括数字类型和字符串类型。这个我们已经讨论过。在后面的章节里,我们会看到如何用class创建我们自己的类(类型)。
对象
记住,Python将程序中所指的任何东西都称作对象。这意味着,在一般意义上,我们不说这些东西,我们说“这些对象”。(关于对象,译者有一个很好的文章,介绍了Python的对象,请关注微信公众号或加入QQ群,还有CSDN博客,名字都叫(Mark学编程)中寻找并研读。好吧,我会在简书发表的。)
有及:英文原文中,会有对有经验的程序员的一小段补充材料,我以为对初学者没有用,可能还会混淆,所以,没有译出。
安装PyCharm的材料,没有翻译,网上有大量的安装指导材料,并且,我也没有将原文最前面的Python的安装翻译过来,因为,网上很多。必要时到QQ群(Mark学编程)里,找人指导安装。
举例:使用变量和常量
键入下列代码并运行:
i = 5
print ( i )
i = i +1
Print ( i )
s = ‘’’This is a multi-line string.
This is the second line. ‘’’
print(s)
(再提醒,代码输出刻意跳过,请自行测试运行)
代码运行原理
首先,我们将常量值 5 赋值给变量 i, 用(=)赋值的。这么一行称作语句;因为他描述了这些东西如何被处理,在这个具体的例子里,我们将值 5 连接到变量名 i 上。 下一步,打印了i 的值,用的是print 语句,它仅仅是将变量值打印到屏幕上。
然后,我们将 1 加到 i 存储的值上,并存储。接着打印,然后就是 6;
相同的,我们把字符串赋值到变量 s 上,然后打印。
如果你学习过其他语言,请注意,在Python语言里,变量不需要声明,类型也不需要定义。
逻辑与实体行
实体行就是你所见所写的,逻辑行是指Python作为一个单独语句的行。Python假设一个实体行对应一个逻辑行。
举个例子,print (“hello world”) 语句就是一个逻辑行,如果实体的就是这一行,那么这个实体行就对应一个逻辑行。
Python是鼓励一个实体行对应一个逻辑行的使用方法,这样会使阅读代码清晰。如果你在一行内有1个以上逻辑行,要使用 (;)号来特别分开;这样就表示一个逻辑行的结束,举例:
i = 5
print ( i )
和下面的相同
i = 5;
print ( i );
当然和下面的也相同
i = 5; print ( i );
还有这个
i = 5; print ( i )
但是,我还是强烈推荐你坚持使用一行写一个逻辑行的做法。希望永远不要使用分号,事实上,作者本人从未使用或者见到过Python程序里面有人用分号。
下面的关于\的用法略去(不增加初学者负担,如果学有余力,请到QQ群下载英文原版。)
缩进
Python里面的空白很重要。事实上,(行)开始的空白(缩进)十分重要。这叫做缩进。这些缩进决定了逻辑行,以及逻辑行的分组情况,也就是说这些逻辑行究竟是属于哪些代码块。
这也就意味着同样缩进的行是整体一块的语句,这些一起缩进的叫做“块”,我们将在今后看到这些重要块的例子。
需要记住的是,如果你的缩进出现问题,那么就出现错误。比如下面:
i = 5
#下面代码错误,留意print前面有个空格。
print ('Value is', i)
print (' I repeat, the value is', i )
当你运行这个代码时,你会看到下面的报错出现,请亲自测试。
File "whitespace.py", line 3
print ('Value is', i )
^
Indentation Error: unexpected indent (缩进错误)
如果在你的编辑器上运行了上面的代码,就应该很容易看清报错的内容。因为print前面有个空格,编辑器会报错。
如何缩进?Python推荐4个空格。一般编辑器都自动缩进。注意,Python永远用缩进的块,而不是括号,来表示同一组代码。
好了,这些琐碎但又很基础的东西学完了。(需要你多多练习,才能掌握)。下面进入控制流等方面的学习了。