Python 程序的输出 | 第五套

简介: Python 程序的输出 | 第五套

难度级别: 困难

预测以下程序的输出:

程序一:

def gfgFunction():
  "juejin is cool website for boosting up technical skills"
  return 1
print (gfgFunction.__doc__[10:14])

输出:

cool

说明: 通过在函数定义开始后的第一行放置一个字符串,为此方法定义了一个文档字符串。可以使用函数的 doc 属性来引用文档字符串。因此它打印索引字符串。

程序二:

class A(object):
  val = 1
class B(A):
  pass
class C(A):
  pass
print (A.val, B.val, C.val)
B.val = 2
print (A.val, B.val, C.val)
A.val = 3
print (A.val, B.val, C.val)

输出:

1 1 1 
1 2 1 
3 2 3

解释:

在 Python 中,类变量在内部作为字典处理。如果在当前类的字典中没有找到变量名,则搜索类层次结构(即其父类),直到找到引用的变量名,如果找不到变量则抛出错误。

因此,在上面的程序中,第一次调用 print() 打印了初始化值,即 1。

在第二次调用中,因为 B.val 设置为 2,输出为 1 2 1。

最后的输出 3 2 3 可能令人惊讶. 这里 B.val 反映的是 2 而不是 3,而不是 3 3 3,因为它之前被覆盖了。


程序三:

check1 = ['Learn', 'Quiz', 'Practice', 'Contribute']
check2 = check1
check3 = check1[:]
check2[0] = 'Code'
check3[1] = 'Mcq'
count = 0
for c in (check1, check2, check3):
  if c[0] == 'Code':
    count += 1
  if c[1] == 'Mcq':
    count += 10
print (count)

输出:

12

解释:

当将 check1 分配给 check2 时,我们创建了对同一列表的第二个引用。对 check2 的更改会影响 check1。当将 check1 中所有元素的切片分配给 check3 时,我们创建了 check1 的完整副本,可以独立修改(即 check3 中的任何更改都不会影响 check1)。

因此,在检查 check1 时,“代码”得到匹配并且计数增加到 1,但 Mcq 不会匹配,因为它仅在 check3 中可用。

现在在这里检查 check2 也匹配“代码”,导致计数值为 2。

最后,在检查与 check1 和 check2 分开的 check3 时,只有 Mcq 匹配并且计数变为 12。

程序四:

def gfg(x,l=[]):
  for i in range(x):
    l.append(i*i)
  print(l)
gfg(2)
gfg(3,[3,2,1])
gfg(3)

输出:

[0, 1] 
[3, 2, 1, 0, 1, 4] 
[0, 1, 0, 1, 4]

说明:

第一个函数调用应该相当明显,循环将 0 和 1 附加到空列表 l 中。l 是指向存储在内存中的列表的变量的名称。第二次调用从在新的内存块中创建一个新列表开始。l 然后引用这个新列表。然后它将 0、1 和 4 附加到这个新列表中。那太好了。第三个函数调用很奇怪。它使用存储在原始内存块中的原始列表。这就是为什么它从 0 和 1 开始。

如果大家发现任何不正确的地方,都可以在下方评论区告诉我,互相学习,共同进步!

目录
相关文章
|
6天前
|
数据处理 UED Python
Python 进度条:告别枯燥等待,让你的程序动感十足!
Python 进度条:告别枯燥等待,让你的程序动感十足!
26 1
|
2月前
|
分布式计算 并行计算 安全
在Python Web开发中,Python的全局解释器锁(Global Interpreter Lock,简称GIL)是一个核心概念,它直接影响了Python程序在多线程环境下的执行效率和性能表现
【6月更文挑战第30天】Python的GIL是CPython中的全局锁,限制了多线程并行执行,尤其是在多核CPU上。GIL确保同一时间仅有一个线程执行Python字节码,导致CPU密集型任务时多线程无法充分利用多核,反而可能因上下文切换降低性能。然而,I/O密集型任务仍能受益于线程交替执行。为利用多核,开发者常选择多进程、异步IO或使用不受GIL限制的Python实现。在Web开发中,理解GIL对于优化并发性能至关重要。
46 0
|
2月前
|
存储 算法 数据库
Python 抽奖程序限定次数详解
构建Python抽奖程序,限定用户抽奖次数,使用字典存储用户ID及抽奖次数。`LotterySystem`类包含判断、记录和抽奖方法。当用户达到最大抽奖次数(默认3次)时,禁止继续。示例展示如何创建系统,模拟用户抽奖,并扩展功能如动态调整次数和多用户、多奖品池。性能优化可通过数据持久化和并发控制实现。
29 0
|
21天前
|
IDE Linux 开发工具
Python中编写第一个 Python 程序
【7月更文挑战第27天】
20 7
|
17天前
|
消息中间件 网络协议 Python
信号传递新风尚!Python IPC,让你的程序间沟通无界限
【8月更文挑战第3天】在多程序系统中,进程间通信(IPC)是实现数据共享与协作的关键。Python提供多种IPC机制,如管道、消息队列和套接字,使信息交流高效灵活。通过`multiprocessing.Pipe()`,进程间可直接传递消息;利用消息队列实现异步通信,提高解耦与扩展性;借助socket库,支持网络内外进程通信。合理运用这些技术,能够显著增强程序间的协同能力,构建更灵活、可扩展的系统。
34 1
|
18天前
|
Python
惊!Python进程间通信IPC,让你的程序秒变社交达人,信息畅通无阻
【8月更文挑战第1天】在编程世界中,进程间通信(IPC)犹如一场社交舞会,各进程通过IPC机制优雅地交换信息,共同完成复杂任务。IPC就像隐形桥梁,连接并行运行的进程,使它们能跨越边界自由沟通。Python提供了多种IPC机制,如管道、队列、共享内存和套接字等,适应不同需求。例如,使用`multiprocessing.Queue`实现进程间通信,生产者向队列添加数据,消费者取出并处理数据,两者虽独立却能有效协作。IPC打破了进程界限,使得程序能像社交达人般自由交流,构建出高效、灵活的应用。掌握IPC,让程序信息畅通无阻。
16 1
|
21天前
|
JSON 监控 开发者
Python I/O管理新篇章:优化你的程序,让数据流动更顺畅
【7月更文挑战第30天】在数据驱动时代, Python I/O操作效率至关重要。理解I/O瓶颈,使用缓冲技术(如调整`open`的`buffering`参数),并发与异步I/O(借助`asyncio`),高效序列化(json, msgpack),及监控调试(cProfile)能显著提升性能。示例展示了缓冲读取和异步文件操作的最佳实践。不断学习可助开发者优化数据流。
36 2
|
28天前
|
Shell 程序员 开发工具
[oeasy]python0026_调试程序_pdb3_帮助_help_求助_文档
调试程序_debug_next_下一步_list_pdb3 🥋
33 1
|
7天前
|
并行计算 开发者 Python
解锁Python多进程编程的超能力:并行计算的魔法与奇迹,探索处理器核心的秘密,让程序性能飞跃!
【8月更文挑战第12天】在Python编程领域,多进程编程是一项关键技能,能有效提升程序效率。本文通过理论与实践结合,深入浅出地介绍了Python中的多进程编程。首先解释了多进程的概念:即操作系统中能够并发执行的多个独立单元,进而提高整体性能。接着重点介绍了`multiprocessing`模块,演示了如何创建和启动进程,以及进程间的通信方式,如队列等。此外,还提到了更高级的功能,例如进程池管理和同步原语等。通过这些实例,读者能更好地理解如何在实际项目中利用多核处理器的优势,同时注意进程间通信和同步等问题,确保程序稳定高效运行。
20 0
|
1月前
|
网络协议 Python
Scapy一个强大的 Python 程序(一)
Scapy是Python的网络数据包操作工具,用于创建、分析和发送网络包。启动Scapy需以管理员权限运行`sudo scapy`。在交互式环境中,可构建自定义数据包,如设置IP包的`ttl`、`src`和`dst`。通过`/`叠加协议层,如IP和TCP。发送数据包示例:构造向`www.slashdot.org`的HTTP GET请求。Scapy还能用于嗅探、过滤和修改数据包,功能强大。