Python每日一学 02——对象与变量

本文介绍了Python中的对象概念,包括数字、序列等都是对象,每个对象有类型、身份标识和值三个属性。通过type()和id()函数可以查看对象的类型和内存地址。对象可以通过变量(名字)进行引用,赋值操作可以改变变量所绑定的对象。同步赋值可以用于交换变量值,如m, n = n, m。增强赋值语句如c += a等结合了运算和赋值。此外,还展示了如何通过input()和split()处理用户输入。
摘要由CSDN通过智能技术生成

Python每日一学 02——对象与变量

一、对象

Python中所有数字、序列、集合、映射、类、实例、异常、模块、类与类的实例、函数、方法、布尔值、空值等都被称为对象。

二、对象属性

每个对象都有3个基本属性:

类型(type)

身份标识(id)

值(value)

type(object) 函数可以返回对象 object 的数据类型,对象一旦创建其类型便不可再变。

id(object) 函数可返回表示对象object的身份标识,也就是系统为这个对象分配的内存的首地址编号,用一个整数表示。对象创建后,其身份标识 id 绝对不会改变。

value就是这个对象存储的值。

有些对象的值可以改变,称为可变数据类型,与之相对,值不可以改变的对象称为不可变数据类型。

print(type(500))  # 类型为:整型 <class 'int'>
print(id(500))    # 内存地址为:139798173271824,与机器有关,每次运行不同
<class 'int'>
139798173271824

程序先创建一个整数对象“500”,500 称为这个对象的值,该对象的数据类型为整型int,可用函数type(500)来获取。系统会为其分配一个内存区域,可用函数id(500)获取,返回值“2562179721328”为该对象在内存地址的起始编号。
在这里插入图片描述

每个对象除了这三个基本属性以外,在使用过程中,用户经常会通过加标签的方式给对象附加一个标识符,也称为名字(name),以方便在程序中通过这个名字引用该对象。这个名字与其他程序设计语言中的变量作用相似,所以 Python 中也经常称之为变量。Python中用赋值符号(=)给对象加标识符,也可以说是给对象增加名字或是没用传统称为给变量赋值。同一个对象可以命多个名字,不同对象命相同名字时,应用时访问最邻近命名的那个对象。

num = 500         # 名字为num
print(type(num))  # <class 'int'>
print(id(num))    # 2562179721328
print(num)        # 值为500
<class 'int'>
139798173272080
500

三、赋值

将一个标签名字绑定到一个对象上的操作,命名后可以用这个名字来引用或者说访问该对象,这个操作用赋值符号“=”完成。Python中的变量在使用前不需要声明,也不需要声明其类型。但每个变量在使用前都必须先有值才可以使用,也就是说变量首次出现必须是在赋值符号的左侧。只有当一个对象被赋值给一个变量后,该变量才会被创建。

x = 5             # 名字x 绑定到整数5上
print(x)
y = 'hello'       # 名字y 绑定到字符串'hello' 上
print(y)
z = [1, 2, 3, 4]  # 名字z 绑定到列表[1, 2, 3, 4]上
print(z)
x = (16 + (8 ** 2 - 4 * 6 * 2) ** 0.5) / (2 * 5)  # 名字x 绑定到表达式求值得到的浮点数对象上
print(x)
5
hello
[1, 2, 3, 4]
2.0

在同一个程序中对一个变量重复赋值,或者说重复使用同一个变量名时,起作用的是最近的语句。下面程序中先将浮点型对象“3.14”和整型对象“4”分别与变量名“pi”和“radius”绑定,此时计算面积时,参与运算的是“3.14”和“4”,得到的浮点型对象“50.24”与变量名“area”绑定。 当程序执行到 radius = 6 时,“radius”这个名字将先与对象“4”解绑,再重新绑定到对象“6”上。类似的操作,执行area = pi * (radius ** 2) 时,“area”也会与对象“50.24”解除绑定并重新绑定到对象“113.24”上。

pi = 3.14                  # 变量pi赋值为3.14
radius = 4                 # 变量radius赋值为4
area = pi * (radius ** 2)  # 计算圆面积
print(area)                # 输出面积值 50.24
radius = 6                 # 变量radius赋值为6,后面使用这个值
area = pi * (radius ** 2)  # 计算圆面积
print(area)                # 输出面积值 113.04
50.24
113.04

在这里插入图片描述

需要命名的对象可以是包含于圆括号、方括号、大括号或引号内的可迭代对象。如果赋值号左边是一个名字,则将名字直接绑定到右侧对象上。若左边名字多于一个时,名字数量必须与右侧的可迭代对象中的元素或字符数量相同,这些名字将按从左至右的顺序被绑定到对应元素或字符,这种操作称为同步赋值

x = 1, 2
print(x)        # (1, 2),名字 x 绑定到元组(1, 2)上,后面用x访问这个元组 
(1, 2)
x, y = 1, 2     # 左侧有2个名字,右侧对象中有2个元素1和2,数量相同
print(x, y)     # 1 2,要求右侧对象中元素数量与左侧变量数量相同
1 2
x, y = {1, 2}
print(x, y)     # 1 2,要求右侧对象中元素数量与左侧变量数量相同
1 2
x, y, z = 'abc'
print(x, y, z)  # a b c,要求右侧对象中字符数量与左侧变量数量相同
a b c

利用同步赋值方法可以实现两个变量指向对象的交换:

m, n = 5, 10  # m,n = (5,10),将5 赋值给m, 将10赋值给n
print(m, n)   # 输出 5 10
print(f'm = {m}, n = {n}')   # 输出 m = 5, n = 10
m, n = n, m   # 交换变量 m 和 n 所指向的对象
print(m, n)   # 输出 10 5
print(f'm = {m}, n = {n}')   # 输出 m = 10, n = 5
5 10
m = 5, n = 10
10 5
m = 10, n = 5

从上面输出中可以看到,同步赋值可以方便的交换两个变量的值。用f-string格式输出语义更清晰明了,推荐使用。split()方法可根据指定分隔符将对象切分为列表,可将这个方法作用于input()函数上,将在一行内输入的多个数据切分为一个列表,被分隔符分开的多个数据作为列表的元素。参数缺省时,默认用空格切分对象,如果指定了分隔符,则用分隔符进行切分。

m,n = input().split()        # split()参数缺省时,可根据空格将输入切分为列表
# 例如输入 “100 200”,可被切分为[100,200],然后将列表中的元素分别赋值给m,n
print(m,n)                   # 输出 100,200
print(f'm = {m}, n = {n}')   # 输出 m = 5, n = 10

100 200
100 200
m = 100, n = 200

split()可根据逗号(‘,’)若其他符号将输入切分为列表,用于切分的符号放到括号中作为参数。

m,n = input().split(',')     # split()可根据逗号(',')将输入切分为列表
# 例如输入 “100,200”,可被切分为[100,200],然后将列表中的元素分别赋值给m,n
print(m,n)                   # 输出 100,200
print(f'm = {m}, n = {n}')   # 输出 m = 5, n = 10
100,200
100 200
m = 100, n = 200

例如:用hour, minute, second做变量名,在一行内输入一个包含小时、分钟和秒的时间,按测试用例格式输出(表示时间的数字根据自己的输入变化)。

# 补充你的代码
hour, minute, second = input().split(':')
print(f'现在是北京时间{hour}{minute}{second}秒')
23:07:58
现在是北京时间23时07分58秒

Python提供了“+=、-=、*=、/=、//=、%=、**%=”等增强赋值语句,在单个语句中将二元运算赋值语句合为一体,具体描述参见下表。

c = 100    # 将数字100命名为c
print(c)

c = c + 8  # 将 100 + 8 的运算结果命名为 c,c值为108
print(c)

c += 8  # 与c = c + 8相同,将 108 + 8 的运算结果命名为 c,c值为116
print(c)
100
108
116
符号描述实例解释
+=加法运算赋值符c += ac = c + a
-=减法运算赋值符c -= ac = c - a
*=乘法运算赋值符c *= ac = c * a
/=除法运算赋值符c /= ac = c / a
%=取模运算赋值符c %= ac = c % a
**=幂运算赋值符c **= ac = c ** a
//=整除运算赋值符c //= ac = c // a

Python 3.8 以后的版本增加了一个称为赋值表达式(也称海象运算符)的新特性,语法为:

name := expression

赋值表达式把一个表达式的值赋给一个标识符,返回表达式的值。例如,经常需要重复输入并进行处理,当输入回车时结束输入,实现代码如下:

# 下面代码作用是重复接受收入,输入非空时输出输入的字符串,输入为空时结束程序
while True:             # 构建无限循环
    user_name = input()  # 循环内重复输入用户名
    if not user_name:    # 若直接输入回车时,user_name为空字符串,值为False
        break            # 结束循环
    print(user_name)      # 输入非空字符串时输出
1
1
2
2

上述代码可用赋值表达式更简洁的实现(解释器版本高于3.8时才可用),代码如下:

# 下面代码作用是重复接受收入,输入非空时输出输入的字符串,输入为空时结束程序
while user_name := input():  # 输入回车时,user_name值为空字符串,表达式值为False,结束循环
    print(user_name)         # 输入不是回车时进入循环执行处理语句
1
1
2
2
0
0
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-北天-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值