Python中的星号实际上只是标准的乘法运算符*.它映射到它所操作的对象的

__mul__方法,因此可以重载以具有自定义含义.这与if或print无关.

在字符串(str和unicode)的情况下,它已被重载/重写以表示重复字符串,使得“foo”* 5评估为“foofoofoofoofoo”.

>>> 'foo' * 5 # and the other way around 5 * "foo" also works

'foofoofoofoofoo'

而“Fizz”*(i%3 == 0)只是一个“聪明”的简写:

"Fizz" if i % 3 == 0 else ""

这是因为表达式i%3 == 0计算为布尔值,而布尔值是Python中整数的子类型,因此True == 1和False == 0,因此如果将“字符串”与“布尔”“相乘” ,你要么得到相同的字符串或空字符串.

注意:我还要注意,根据我的经验/理解,Python中不鼓励这种类型的编程风格 – 它使代码的可读性降低(对于新手和老朋友而言)并且不会更快(并且在事实上,可能更慢;请参阅http://pastebin.com/Q92j8qga以获得快速基准(但有趣的是,不是在PyPy:http://pastebin.com/sJtZ6uDm中)).

并且*也适用于列表和元组的实例:

>>> [1, 2, 3] * 3

[1, 2, 3, 1, 2, 3, 1, 2, 3]

>>> (1, 2, 3) * 3

(1, 2, 3, 1, 2, 3, 1, 2, 3)

class Foo(object):

def __mul__(self, other):

return "called %r with %r" % (self, other)

print Foo() * "hello" # same as Foo().__mul__("hello")

输出:

called <__main__.Foo object at 0x10426f090> with 'hello'

*被映射到__mul__的情况也适用于“原始”类型,例如int,float等,因此3 * 4相当于(3).__ mul __(4)(和其他运算符相同).实际上,您甚至可以为int子类化并为*提供自定义行为:

class MyTrickyInt(int):

def __mul__(self, other):

return int.__mul__(self, other) - 1

def __add__(self, other):

return int.__add__(self, other) * -1

print MyTrickInt(3) * 4 # prints 11

print MyTrickyInt(3) + 2 # prints -5

…但请不要这样做:)(事实上,完全保持子类化混凝土类型的干净并没有伤害!)

python中星号怎么打出来_Python中的星号符号相关推荐

  1. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

  2. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  3. python中num是什么意思_python中的number类型

    python中的number具体分为: int(有符号整型) long(长整型[也可以代表八进制和十六进制]) float(浮点型) complex(复数) 变量命名: a=1 整数型 b=1.0 浮 ...

  4. python post与get的区别_python中get和post有什么区别

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.sfkyty.com ...

  5. python深复制与浅复制_Python中的深拷贝和浅拷贝详解

    要说清楚Python中的深浅拷贝,需要搞清楚下面一系列概念: 变量-引用-对象(可变对象,不可变对象)-切片-拷贝(浅拷贝,深拷贝) [变量-对象-引用] 在Python中一切都是对象,比如说:3, ...

  6. python运行mcmc为何老出错_python中mcmc方法的实现

    MCMC方法在贝叶斯统计中运用很多,MIT发布的EMCEE是实现的比较好的.介绍页面在下面.源代码中examples里的代码可以帮助理解各种功能,特别是line.py 列出了最小二乘法,最大似然法和M ...

  7. python实例属性与类属性_Python中的类属性和实例属性引发的一个坑-续

    上篇文章Python 中的类属性和实例属性,我们探讨了类属性和实例属性引发的一个小坑.总结了类属性和实例属性的区别如下:类属性可以被类和实例调用,实例属性只能被实例调用 类属性不会随着实例的调用而改变 ...

  8. python计算数组元素的和_python中数组的运算

    Python中进行数组的运算需要调用NumPy包. 其官网是:http://www.numpy.org/​www.numpy.org NumPy是Python语言的一个扩充程序库.它支持高级大量的维度 ...

  9. python中格式化字符串的作用_python中字符串格式化的意义(化妆)

    格式 描述 %%百分号标记 #就是输出一个% %c字符及其ASCII码 %s字符串 %d有符号整数(十进制) %u无符号整数(十进制) %o无符号整数(八进制) %x无符号整数(十六进制) %X无符号 ...

  10. python中 r是什么意思_python中rb含义理解

    Python文件读写的几种模式: r,rb,w,wb 那么在读写文件时,有无b标识的的主要区别在哪里呢? 文件使用方式标识 'r':默认值,表示从文件读取数据 'w':表示要向文件写入数据,并截断以前 ...

最新文章

  1. spark Tachyon
  2. netty tcp服务端主动断开客户端_「Netty核心技术」6-ChannelPipeline源码
  3. 类的继承私有成员问题
  4. Spring 3 RESTful Web服务
  5. python beautiful soup 标签完全相同_Python爬取Python教程并制作成pdf
  6. python中pop()与pop(0)的时间复杂度区别
  7. NXLog采集windows日志配置conf文件
  8. easy chm 绿色免安装版
  9. Resnet 18网络模型
  10. 利用VMWare和软路由多播实现校园网带宽叠加
  11. java中数组倒叙复制输出
  12. python 知乎 合并 pdf_怎么把多个pdf合并在一起?
  13. 微信小程序开发账号找回
  14. 力扣第235题“二叉搜索树的最近公共先祖”的解题思路
  15. WebGL 及其在 WebRTC 中的应用
  16. ibatis之——sqlMapConfig.xml配置文件详解
  17. O记遭遇罗生门,未来是云原生数据库的!
  18. 基于Node.js平台的Express教程
  19. SH86260 芯片 苹果夹子 mp3 修复....
  20. PDERL:基于DEM的快速精确通视域分析算法介绍(一)

热门文章

  1. HTTP协议理解及服务端与客户端的设计实现
  2. LabVIEW两种方法实现Excel数据(含汉字)读取
  3. linux中安装apr
  4. Pytorch并行计算(一): DataParallel
  5. Windows 10简单搭建一个局域网Web下载分享界面
  6. 云锁linux宝塔安装,宝塔面板安装云锁
  7. 序列化和反序列化(示例)
  8. VM技术(一)NES模拟器VM综述
  9. drm android 工作原理,[原创]某DRM解密流程简单分析
  10. CSS3实现5个常用的网页动画效果