python关于对象&&数字和运算

举报
芒果_Mango 发表于 2022/04/30 23:05:58 2022/04/30
【摘要】 大家好,我是芒果,一名非科班的在校大学生。对C/C++、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流作者简介:CSDN C/C++领域新星创作者https://blog.csdn.net/chuxinchangcun?type=blog掘金LV3用户 https://juejin.cn/us...

大家好,我是芒果,一名非科班的在校大学生。对C/C++、数据结构、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流

作者简介:

关于对象的比较

对象:包含 值 身份 类型

对象值的比较

  • 所有内建类型对象都可以进行比较操作来进行值比较. (比较的双方必须是相同类型).
  • 比较运算的结果是True或者False.
  • 比较运算符包括 ==, !=, <, >, <=, >=

对象身份的比较

回忆我们之前讲过的, 变量名只是对象的一个引用. 那么两个变量名是否指向同一个对象呢?

可以使用 id 这个内建函数来比较. 如果id的值相同, 说明是指向同一个对象.

a = 100
b = a
print(id(a) == id(b))   #True

  • Python还提供了 is 关键字, 直接进行判定是否指向相同的对象 本质也是比较id
a = 100
b = a
print(a is b)   #True
  • 还提供了 is not 可以直接判定两个变量名是否指向不同的对象.
a = 100
b = a
print(a is not b)   #False

对象类型的比较

定义的时候可以写明类型,但是没用

a :int = 10
a :int = "he"   #不报错,因为int不起效果
  • 两个对象比较类型是否相同, 可以使用内建函数type
a = 10
print(type(a) == type(100)) #True
  • Python还提供了一个内建函数 isinstance
a = 100
print(isinstance(a,type(10)))   #True
​
a = []
print(isinstance(a,list))   #True

类型工厂函数

我们前面介绍了 int() 这个内建函数, 可以将一个字符串转换成一个整数. 其实是调用 int() 之后生成了一个 整数类型的对象. 我们称这种函数为 “工厂函数” , 就像工厂生产货物一样.

类似的工厂函数还有很多:

  • int(), float(), complex() str(), unicode() list(), tuple() dict() bool()

python不支持的类型

  • char, byte: 可以使用长度为1的字符串, 或者整数代替;
  • 指针: Python替你管理内存, 虽然id()返回的值接近于指针的地址, 但是并不能主动去修改;
  • int/short/long: 以前版本的Python中也是区分int和long的, 但是后来统一在一起了; 记住Python中的整数表示的范围, 只取决于你机器内存的大小.
  • float/double: Python的float其实就是C语言的double. Python设计者认为没必要支持两种浮点数.

数字和运算

整数的位运算

image-20220316152828244

常用内置函数/模块

  • abs: 求一个数的绝对值.
a = -10
print(abs(a))   #10
  • divmod: 返回一个元组, 同时计算商和余数
a,b = divmod(10,3)  #返回的第一个数:10/3 返回的第二个数:10%3
print(a,b)  # 3 1
  • str: 将数字转换成字符串.
a = 100
print(str(a))   #100
print(type(a))  #并不会实际改变a的类型    <class 'int'>
print(type(str(a))) #<class 'str'>
  • round: 对浮点数进行四舍五入. round有两个参数, 第一个是要进行运算的值, 第二个是保留小数点后多少位.

    • 需要导入math模块
import math
for i in range(0,5):
    print(round(math.pi,i))     #pi相当于Π 3.1415926
#执行结果
3.0
3.1
3.14
3.142
3.1416
  • 整数进制转换: oct(), hex(), 参数是一个整数, 返回值是对应字面值的字符串.
print(oct(10))   #8进制   0o12
print(hex(10))  #16进制   0xa
  • math/cmath模块: 提供一些方便的数学运算的函数. math是常规数学运算; cmath是复数运算;

  • 随机数random模块: 使用方法比较简单

    • 需要导入random模块

    默认返回的是0-1范围的数

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。