疯狂Python讲义学习笔记——第2章变量和简单类型2.2变量

        无论使用什么语言编程,总要处理数据,处理数据就需要使用变量来保存数据。变量就像一个个小小的容器,用于“盛装”程序中的数据。常量同样也用于“盛装”程序中的数据。

        常量和变量的区别:常量一旦保存某个数据后,该数据就不能发生改变;变量保存的数据则可以多次发生改变,只要程序对变量重新赋值即可。

2.1 Python是弱类型语言

        Python是弱类型语言,弱类型语言有两个典型特征。

  • 变量无须声明即可直接赋值:对一个不存在的变量赋值就相当于定义了一个新的变量。
  • 变量的数据类型可以动态改变:同一个变量可以一会儿被赋值为整数型,一会儿被赋值为字符串。

        打开Python的交互式解释器,“试验”Python。

        上面代码没有生成任何输出,只是向交互式解释器中存入了一个变量a,该变量a的值为5。

        如果我们想看到某个变量的值,可以直接在交互式解释器中输入该变量。例如,此处想看到变量a的值,可以直接输入a。

        从上面的交互式过程可以看到,交互式解释器输出变量a的值:5。

        接下来,改变变量a的值,将新的值赋值给变量a,新赋的值会覆盖原来的值。例如:

        此时变量a的值不再是5了,而是字符串"Hello, Python",a的类型变成了字符串。下面再次输入a,让交互式解释器显示a的值。

        查看此时a的类型,可以使用Python的内置函数type()。

        此时可以看到a的类型是str。

        上面的交互过程对应的程序如下。

# 定义一个数值类型变量
a = 5
print(a)
# 重新将字符串赋值给变量a
a = 'Hello, Python'
print(a)
print(type(a))

        运行上面的程序,可以看到如下输出结果。

2.2 使用print函数输出变量

        前面使用print()函数时,都只输出了一个变量,但实际上print()函数完全可以同时输出多个变量,而且它具有更多丰富的功能。在交互式解释器输入help(print),可以查看到print()函数的详细语法如下:

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

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

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

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

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

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

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

# 设置end参数,指定输出之后不再换行
print(10, '\t', end="")
print(20, '\t', end="")
print(30, '\t', end="")

        上面三条print()语句会执行3次输出,但由于它们都指定了end="",因此每条print()语句的输出都不会换行,依然位于同一行。运行上面代码,可以看到如下输出结果。

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

f = open("poem.txt", "w") # 打开文件以便写入
print('鹅鹅鹅', file=f)
print('曲项向天歌', file=f)
print('白毛浮绿水', file=f)
print('红掌拨清波', file=f)
f.close()

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

2.3 变量的命名规则

        Python使用标识符给变量命名,标识符就是给程序中变量、类、方法命名的符号。Python语言的标识符必须以字母、下划线(_)开头,后面可以跟任意数目的字母、数字和下划线(_)。Python语言是区分大小写的,因此abc和Abc是两个不同的标识符。

        使用标识符应注意的规则:

  • 标识符可以由字母、数字、下划线(_)组成,其中数字不能打头。
  • 标识符不能是Python关键字,但可以包含关键字
  • 标识符不能包含空格。

2.4 Python的关键字和内置函数

        Python还包含一系列关键字和内置函数,一般也不建议使用它们作为变量名。

  • 如果使用关键字作为变量名,Python解释器会报错。
  • 如果使用内置函数作为变量名,Python解释器虽然不会报错,但是该内置函数就被这个变量覆盖,会导致该内置函数无法使用。

        以下是Python3.x版本的关键字表格:

关键字

描述

False

布尔值,假

None

True

布尔值,真

and

逻辑与操作符

as

别名,用于import语句或with语句中

assert

断言,用于调试目的

async

异步,定义异步函数或方法

await

等待,仅在异步函数内部使用

break

跳出循环

class

定义类

continue

继续下一个循环迭代

def

定义函数

del

删除对象

elif

否则如果,条件语句的一部分

else

否则,条件语句的一部分

except

异常处理,捕获异常

finally

异常处理,无论是否发生异常都会执行

for

循环遍历序列(如列表、元组等)

from

从模块中导入特定的部分

global

声明全局变量

if

条件语句

import

导入模块

in

成员操作符,检查元素是否存在于序列中

is

身份操作符,检查两个对象是否相同

lambda

定义匿名函数

nonlocal

声明非局部变量

not

逻辑非操作符

or

逻辑或操作符

pass

空操作,用于占位

raise

引发异常

return

返回函数值

try

异常处理,尝试执行代码块

while

当条件为真时循环执行代码块

with

简化异常处理的上下文管理器

yield

生成器函数返回值,并在下次调用时从该位置继续执行

        可以通过Python程序来查看它所包含的关键字。例如如下程序。

# 导入keyword模块
import keyword
# 显示所有关键字
keyword.kwlist

        运行上面的程序,可以看到如下输出结果。

        上面这些关键字都不能作为变量名。

        Python3部分内置函数及描述表格如下。

函数

描述

abs(x)

返回数字的绝对值或复数的模

all(iterable)

如果可迭代对象的所有元素都为真(或可迭代对象为空),则返回 True

any(iterable)

如果可迭代对象中有任何元素为真,则返回 True

ascii(object)

返回对象的可打印的 ASCII 表示形式,或者如果对象是一个字符串,则返回引用该字符串的字符串

bin(x)

将整数转换为二进制字符串

bool([x])

返回一个布尔值,True 或 False。x 是可选的参数,如果提供,则根据 x 的值返回 True 或 False

breakpoint(*args, **kws)

调用 sys.breakpointhook()

bytearray([source[, encoding[, errors]]])

返回一个新的字节数组对象

bytes([source[, encoding[, errors]]])

返回一个新的字节对象

callable(object)

如果对象可以被调用(比如函数、方法等),则返回 True

chr(i)

返回 Unicode 码位为 i 的字符的字符串表示形式

classmethod(function)

返回一个类方法

compile(source, filename, mode[, flags[, dont_inherit]])

编译源代码字符串,返回代码对象

complex([real[, imag]])

返回一个复数,实部和虚部都是浮点数

copyright()

打印 Python 解释器的版权信息

credits()

打印 Python 解释器的贡献者名单

delattr(object, name)

删除对象属性的引用

dict([**kwargs])

创建一个字典

dir([object])

返回对象的属性列表,如果不提供对象,则返回当前局部符号表

divmod(a, b)

返回一对数 (a // b, a % b)

dreload(module)

重新加载之前已经导入的模块(注意:这不是内置函数,但通常在使用 from importlib import reload 后可用作 reload)

eval(expression[, globals[, locals]])

执行 Python 表达式,并返回表达式的值

exec(object[, globals[, locals]])

执行存储在对象中的 Python 代码

filter(function, iterable)

过滤可迭代对象的元素,只返回使函数返回值为 True 的元素

float([x])

将一个数字或字符串转换为浮点数

format(value[, format_spec])

格式化一个值

frozenset([iterable])

返回一个不可变的集合对象

getattr(object, name[, default])

获取对象属性的值

globals()

返回当前全局符号表的字典

hasattr(object, name)

检查对象是否有给定的属性

hash(object)

获取对象的哈希值

help([object])

启动内置帮助系统,或者打印对象和它的调用签名的帮助信息

hex(number)

将整数转换为小写的十六进制字符串

id(object)

返回对象的唯一标识符,通常是对象在内存中的地址

input([prompt])

读取用户的输入,并返回字符串

int([x[, base]])

将一个数字或字符串转换为整数,base 指定了 x 的基数(如果 x 是字符串)

isinstance(object, classinfo)

检查对象是否是指定类或其子类的实例

issubclass(class, classinfo)

检查一个类是否是另一个类的子类(直接或间接)

iter(iterable)

获取可迭代对象的迭代器

len(s)

返回对象的长度(元素个数)

list([iterable])

创建一个列表

locals()

返回当前局部符号表的字典

map(function, iterable, ...)

将函数应用于可迭代对象的每个元素,并返回结果的迭代器

max(iterable[, key[, default]])

返回可迭代对象中的最大值

min(iterable[, key[, default]])

返回可迭代对象中的最小值

next(iterator[, default])

返回迭代器的下一个项目,如果迭代器耗尽,则返回 default(如果提供)

object()

返回一个空的对象

oct(number)

将整数转换为八进制字符串

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

打开一个文件并返回相应的文件对象

ord(c)

返回 Unicode 字符的 Unicode 码位

pow(x, y[, z])

返回 x 的 y 次幂,如果 z 给出,返回 x 的 y 次幂对 z 取模的结果

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

打印输出,默认使用空格分隔,换行结束

property(fget=None, fset=None, fdel=None, doc=None)

返回一个属性值

range(start, stop[, step])

返回一个范围对象,通常用于 for 循环

repr(object)

返回一个对象的字符串表示形式,通常可以用来重新创建对象

reversed(seq)

返回一个反转的迭代器

round(number[, ndigits])

四舍五入到给定的小数位数,如果不提供 ndigits,则四舍五入到最接近的整数

set([iterable])

创建一个集合对象

setattr(object, name, value)

设置对象属性的值

slice(start, stop[, step])

返回一个表示由 range(start, stop, step) 指定索引集的 slice 对象

sorted(iterable[, key][, reverse])

返回一个已排序的列表

staticmethod(function)

返回一个静态方法

str(object='')

返回一个对象的字符串表示形式

sum(iterable[, start])

返回数值可迭代对象的和,可选的 start 参数为求和的初始值

super()

返回父类的一个代理对象,用于调用父类的方法

tuple([iterable])

创建一个元组

type(object)

返回对象的类型,或者创建一个新的类型

vars([object])

返回对象的 dict 属性,如果没有提供对象,则返回当前局部符号表

zip(*iterables)

将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同

        可以在Python交互式解释器中执行dir(__builtin__)获取完整的内置函数列表。

        上面这些内置函数的名字也不应该作为标识符,否则Python的内置函数会被覆盖。

作者Info

【微信号】:luckweimin
【微信公众号】:民哥聊编程。欢迎大家关注~
【B站】:民哥聊编程(https://space.bilibili.com/620580007)

【CSDN】:https://blog.csdn.net/u013092707?type=blog

  • 29
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值