Python中奇怪的现象

1、特殊构造的列表的元素不可以自加

>>>x = [[0, 0, 0, 0]] *4
>>>x[0][0] += 1
>>>x
[[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]]

上面本来是想得到[[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]的。
解决:
老老实实写x的初始值:

>>>x = [[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]]
>>>x[0][0] += 1
>>>x
[[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
### Python `print()` 函数详解 `print()` 是 Python 中用于向标准输出设备(通常是屏幕)打印信息的一个内置函数。以下是关于该函数的一些重要特性和用法: #### 基本语法 `print()` 的基本语法如下: ```python print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) ``` - **`*objects`**: 表示可以传入多个对象作为参数,这些对象会被依次打印出来。 - **`sep`**: 参数定义了各个对象之间的分隔符,默认为空格 `' '`。 - **`end`**: 定义了在所有对象被打印之后附加的内容,默认是一个换行符 `\n`[^4]。 - **`file`**: 指定输出目标,默认为 `sys.stdout`(即标准输出)。可以通过此参数将输出重定向到文件或其他流中。 - **`flush`**: 控制是否强制刷新输出缓冲区,默认值为 `False`。 --- #### 示例代码展示 ##### 打印单个字符串 最简单的形式是仅传递一个字符串给 `print()` 函数: ```python print("Hello, world!") ``` ##### 同时打印多个对象并自定义分隔符 当有多个对象需要打印时,可以用 `sep` 来指定它们之间的分隔方式: ```python print(1, 2, 3, 4, sep=", ") ``` 这将会输出:`1, 2, 3, 4`[^2]。 ##### 修改结束符 默认情况下,每次调用 `print()` 都会在最后添加一个换行符。如果希望更改这一行为,则可修改 `end` 参数: ```python for i in range(5): print(i, end=" ") # 输出在同一行显示 ``` 运行结果将是:`0 1 2 3 4`[^4]。 ##### 将输出写入文件 利用 `file` 参数可以把原本应该发送至终端的信息保存下来: ```python with open("output.txt", "w") as f: print("This will be written to a text file.", file=f) ``` ##### 强制立即更新屏幕上的内容 某些场景下可能需要即时看到最新的输出状态而不是等待整个过程完成后再统一呈现,在这种时候就需要启用 `flush=True` 设置: ```python import time for second in range(5): print(second, end=" ", flush=True) time.sleep(1) ``` --- #### 进阶特性 除了常规功能外,还有几个值得注意的地方涉及到了更深层次的知识点或者与其他部分相互关联起来形成新的能力组合。 ##### 自动转换不同类型的数据结构 无论输入的是整数、浮点数还是集合等复杂类型,只要能转化为字符串形式就都可以正常工作[^2]: ```python numbers = {97, 68} words = ['apple', 'banana'] mixed_data = (True, None) print(numbers) # 输出类似于 "{68, 97}" print(words) # 显示 "[‘apple’, ‘banana’]" print(mixed_data) # 结果形如 "(True, None)" ``` ##### 调试模式下的特殊表现 有时候我们可能会遇到一些奇怪现象,这是因为内部机制决定的。例如当我们尝试直接打印某个实例而未重新定义其描述方法的时候就会得到不太友好的反馈消息[^3]: ```python class Person: pass person_instance = Person() print(person_instance) # 可能得到 "<__main__.Person object at 0x...>" ``` 为了改善这种情况,通常建议覆盖类中的 `__str__` 或者 `__repr__` 方法来提供更加清晰直观的结果表示形式。 --- ### 总结 综上所述,虽然表面上看去只是简单的一条命令而已但实际上蕴含着丰富的选项配置以及灵活的应用潜力待挖掘发现。掌握好以上提到的各种参数及其作用范围有助于编写出既简洁又高效的脚本来满足不同场合下的需求[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值