第二章 Python基础语法

第二章 Python基础语法

2.1 标识符与关键字

2.1.1 标识符

所谓的标识符就是对变量,常量,函数,类等对象起的名字。在Python中,标识符的命名,一般需要遵循以下规则:

  • 标识符可以由数字、字母、下划线组成
  • 不能以数字开头
  • 严格区分大小写
  • Python中的关键字不能用作标识符

注意: Python3 支持 Unicode 字符作为标志符,比如汉字,但是不推荐

2.1.2 关键字(保留字)

Python中的关键字,也称为保留字(即Python中,具有特殊意义的一些词语)

Falseclassfinallyis
Nonecontinueforlambda
Truedeffromnonlocal
anddelglobalnot
aselififor
assertelseimportpass
breakexceptinraise
returntrywhilewith
yield

2.2 语法结构

2.2.1 缩进

​ Python 开发者有意让违反了缩进规则的程序不能通过解释,以此来强迫程序员养成良好的编程习惯,也方便所有人查找和阅读。并且 Python 语言利用缩进表示语句块的开始和结束 (off-side 规则),而非使用花括号或者某种关键字。增加缩进表示语句块的开始,而减少缩进则表示语句块的结束。缩进成为了语法的一部分。

​ 根据 PEP 8的规定,必须使用4个空格来表示每级缩进。使用 Tab 字符和其他数目的空格虽然都可以编译通过,但不匹配编码规范。支持 Tab 字符和其他数目的空格仅仅是为兼容很旧的 Python 程序和某些有问题的编辑程序。偏向使用 Tab 字符的程序员可以设置文本编辑器将 Tab 键转换为4个空格实现缩进而不致导致缩进错误。

例如if、while、def语句:

#if语句
if True:
    pass
#def语句,包含while语句嵌套缩减
def fn():
    #while语句
    while True:
        pass

2.2.2 语句行

Python 语句中一般以新行作为语句的结束符,并不需要像类 C 语言一样,需要用英文分号(;)作为语句行的结尾,但是我们可以使用斜杠()将一行的语句分为多行显示,同时,Python 可以同一行显示多条语句,方法是用英文分号 (;)分开

#2条单行单挑语句
a=1
b=2
#1条语句分多行
c = a+b \
+2 \
+10

#将多个语句放到一行,用英文分号分隔
d = 2*c; e =a+b; e+=c; e=e+d

2.3 变量与常量(字面量)

2.3.1 字面量

在程序运行过程,其值保持不变的量称为常量。常量是内存中存储固定值的单元。例如,“Python”、3.14、“北京”都是常量。

2.3.2 变量

在程序运行过程,其值可以改变的量称为变量,用于在程序运行期间临时存储不同类型数据。每个变量在内存中都会占用一定的存储空间,变量是计算机内存中存储位置的表示,也称为内存变量。每个变量都有一个名字,称为变量名。

Python 是动态类型的强类型编程语言,变量不需要声明,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的变量的“类型”是变量所指向的内存中对象的类型,变量的“类型”在运行时才被确定。

Python 中变量的概念和类 C 语言完全不同。Python 中的变量,采用“引用计数”的思想,主体是变量的值,初次使用该值时,Python 为其开辟内存空间,定义变量,类似于给该值“贴标签”,如果多次定义的变量值相同,就相当于给该值贴了多个标签

a = 'hello'
b = 'hello'
c = 'he' + 'll' + 'o'
d = 'hello world'
print(id('he'))
print(id(a))
print(id(b))
print(id(c))
print(id(d))

id()函数是 Python 中查看值内存地址的函数,参数可以是变量,也可是以常量

2.3.3 变量的定义

Python 通过赋值语句定义变量,定义时并不需要指明变量的类型,而变量的类型,取决于赋给它的值。上面演示变量“贴标签”思想的例子,定义了 a、b、c、d 四个变量。但是,都是一次只定义一个变量,Python 还支持一次定义多个变量。

第一种方式,多个变量使用相同的值:

a = b = c = 'hello'
#赋值后,a、b、c的值都是hello

第二种方式,多个变量使用不同的值

a,b,c=12.5,'hello',18

2.4 python中的基础数据类型

在python,基础的数据类型有:整数类型(int)、浮点数类型(float)、字符串类型(str)和布尔值类型(Boolean)

2.4.1 整数类型

整数就是没有小数部分的数字,Python 中的整数包括正整数、0 和负整数。

有些强类型的编程语言会提供多种整数类型,每种类型的长度都不同,能容纳的整数的大小也不同,开发者要根据实际数字的大小选用不同的类型。例如C语言提供了 short、int、long、long long 四种类型的整数,它们的长度依次递增,初学者在选择整数类型时往往比较迷惑,有时候还会导致数值溢出。

而 Python 则不同,它的整数不分类型,或者说它只有一种类型的整数。Python 整数的取值范围是无限的,不管多大或者多小的数字,Python 都能轻松处理。

#将 78 赋值给变量 n
n = 78
print(n)
print( type(n) )
#给x赋值一个很大的整数
x = 8888888888888888888888
print(x)
print( type(x) )
#给y赋值一个很小的整数
y = -7777777777777777777777
print(y)
print( type(y) )

注意:当所用数值超过计算机自身的计算能力时,Python 会自动转用高精度计算(大数计算)。

2.4.2 浮点数

在编程语言中,小数通常以浮点数的形式存储。浮点数和定点数是相对的:小数在存储过程中如果小数点发生移动,就称为浮点数;如果小数点不动,就称为定点数。

f1 = 12.5
print("f1Value: ", f1)
print("f1Type: ", type(f1))
f2 = 0.34557808421257003
print("f2Value: ", f2)
print("f2Type: ", type(f2))
f3 = 0.0000000000000000000000000847
print("f3Value: ", f3)
print("f3Type: ", type(f3))
f4 = 345679745132456787324523453.45006
print("f4Value: ", f4)
print("f4Type: ", type(f4))
f5 = 12e4
print("f5Value: ", f5)
print("f5Type: ", type(f5))
f6 = 12.3 * 0.1
print("f6Value: ", f6)
print("f6Type: ", type(f6))

注意:只要写成指数形式就是小数,即使它的最终值看起来像一个整数。例如 14E3 等价于 14000,但 14E3 是一个小数。

指数形式的小数举例:

  • 2.1E5 = 2.1×105,其中 2.1 是尾数,5 是指数。
  • 3.7E-2 = 3.7×10-2,其中 3.7 是尾数,-2 是指数。
  • 0.5E7 = 0.5×107,其中 0.5 是尾数,7 是指数。

2.4.3 字符串类型

若干个字符的集合就是一个字符串(String)。Python 中的字符串必须由双引号" "或者单引号' '包围,具体格式为:

"字符串内容"
'字符串内容'

字符串的内容可以包含字母、标点、特殊符号、中文、日文等全世界的所有文字。

下面都是合法的字符串:

  • “123789”
  • “123abc”
  • “http://c.biancheng.net/python/”
  • “C语言中文网成立8年了”

使用三个单引号或者双引号可以对多行内容进行注释,这其实是 Python 长字符串的写法。所谓长字符串,就是可以直接换行(不用加反斜杠\)书写的字符串。

Python 长字符串由三个双引号"""或者三个单引号'''包围,语法格式如下:

"""长字符串内容"""
'''长字符串内容'''

在长字符串中放置单引号或者双引号不会导致解析错误。

如果长字符串没有赋值给任何变量,那么这个长字符串就不会起到任何作用,和一段普通的文本无异,相当于被注释掉了。

注意: 此时 Python 解释器并不会忽略长字符串,也会按照语法解析,只是长字符串起不到实际作用而已。

2.4.4 bool布尔类型

Python 提供了 bool 类型来表示真(对)或假(错),比如常见的5 > 3比较算式,这个是正确的,在程序世界里称之为真(对),Python 使用 True 来代表;再比如4 > 20比较算式,这个是错误的,在程序世界里称之为假(错),Python 使用 False 来代表。

TrueFalse 是 Python 中的关键字,当作为 Python 代码输入时,一定要注意字母的大小写,否则解释器会报错。

值得一提的是,布尔类型可以当做整数来对待,即 True 相当于整数值 1,False 相当于整数值 0。因此,下边这些运算都是可以的:

>>> False+1
1
>>> True+1
2

注意,这里只是为了说明 True 和 False 对应的整型值,在实际应用中是不妥的,不要这么用。

总的来说,bool 类型就是用于代表某个事情的真(对)或假(错),如果这个事情是正确的,用 True(或 1)代表;如果这个事情是错误的,用 False(或 0)代表。

>>> 5>3
True
>>> 4>20
False

2.5 输入输出

2.5.1 标准输入

input() 是 Python 的内置函数,用于从控制台读取用户输入的内容。input() 函数总是以字符串的形式来处理用户输入的内容,所以用户输入的内容可以包含任何字符。

input() 函数的用法为:

str = input(tipmsg)

说明:

  • str 表示一个字符串类型的变量,input 会将读取到的字符串放入 str 中。
  • tipmsg 表示提示信息,它会显示在控制台上,告诉用户应该输入什么样的内容;如果不写 tipmsg,就不会有任何提示信息。
a = input("Enter a number: ")
b = input("Enter another number: ")
print("aType: ", type(a))
print("bType: ", type(b))
result = a + b
print("resultValue: ", result)
print("resultType: ", type(result))

我们可以使用 Python 内置函数将字符串转换成想要的类型,比如:

  • int(string) 将字符串转换成 int 类型;
  • float(string) 将字符串转换成 float 类型;
  • bool(string) 将字符串转换成 bool 类型。

2.5.2 标准输出

前面使用 print() 函数时,都只输出了一个变量,但实际上 print() 函数完全可以同时输出多个变量,而且它具有更多丰富的功能。

print() 函数的详细语法格式如下:

print (value,...,sep='',end='\n',file=sys.stdout,flush=False)

从上面的语法格式可以看出,value 参数可以接受任意多个变量或值,因此 print() 函数完全可以输出多个值。例如如下代码:

user_name = 'Charlie'
user_age = 8
#同时输出多个变量和字符串
print("读者名:",user_name,"年龄:",user_age)

运行上面代码,可以看到如下输出结果:

读者名: Charlie 年龄: 8

从输出结果来看,使用 print() 函数输出多个变量时,print() 函数默认以空格隔开多个变量,如果希望改变默认的分隔符,可通过 sep 参数进行设置。例如输出语句:

#同时输出多个变量和字符串,指定分隔符
print("读者名:" ,user_name,"年龄:",user_age,sep='|')

运行上面代码,可以看到如下输出结果:

读者名:|Charlie|年龄:|8

在默认情况下,print() 函数输出之后总会换行,这是因为 print() 函数的 end 参数的默认值是“\n”,这个“\n”就代表了换行。如果希望 print() 函数输出之后不会换行,则重设 end 参数即可,例如如下代码:

#设置end 参数,指定输出之后不再换行
print(40,'\t',end="")
print(5O,'\t',end="")
print(60,'\t',end="")

file 参数指定 print() 函数的输出目标,file 参数的默认值为 sys.stdout,该默认值代表了系统标准输出,也就是屏幕,因此 print() 函数默认输出到屏幕。实际上,完全可以通过改变该参数让 print() 函数输出到特定文件中,例如如下代码:

f = open("demo.txt","w")#打开文件以便写入
print('沧海月明珠有泪',file=f)
print('蓝田日暖玉生烟',file=f)
f.close()

上面程序中,open() 函数用于打开 demo.txt 文件,接连 2 个 print 函数会将这 2 段字符串依次写入此文件,最后调用 close() 函数关闭文件.

print() 函数的 flush 参数用于控制输出缓存,该参数一般保持为 False 即可,这样可以获得较好的性能。

2.6 基础数据类型转换

虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换。Python 已经为我们提供了多种可实现数据类型转换的函数。

函 数作 用
int(x)将 x 转换成整数类型
float(x)将 x 转换成浮点数类型
complex(real,[,imag])创建一个复数
str(x)将 x 转换为字符串
repr(x)将 x 转换为表达式字符串
eval(str)计算在字符串中的有效 Python 表达式,并返回一个对象
chr(x)将整数 x 转换为一个字符
ord(x)将一个字符 x 转换为它对应的整数值
hex(x)将一个整数 x 转换为一个十六进制字符串
oct(x)将一个整数 x 转换为一个八进制的字符串

需要注意的是,在使用类型转换函数时,提供给它的数据必须是有意义的。例如,int() 函数无法将一个非数字字符串转换成整数:

>>> int("123") #转换成功
123
>>> int("123个") #转换失败
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    int("123个")
ValueError: invalid literal for int() with base 10: '123个'
>>>
  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值