模块引用/ pass/ 模块包/ range/xrange/ dict/items/ is/ func引用/ any/all/ 列表值/ 排序


1. Python中的模块之间循环引用问题

在Python中,如果两个模块互相导入(循环引用),可能会导致ImportError。这是因为Python在加载模块时,如果模块还未完全初始化就被另一个模块引用,就会出错。

解决方法

  • 尽量避免循环引用,调整代码结构。
  • 将导入语句放到函数内部,延迟加载。

示例

python 复制代码
# a.py
import b
def func_a():
    b.func_b()

# b.py
import a
def func_b():
    a.func_a()

# 解决方法:在函数内导入
# a.py
def func_a():
    import b
    b.func_b()

2. pass语句是什么作用?

pass是一个空操作语句,用作占位符。当语法上需要一个语句但你不想执行任何操作时,可以使用它。

示例

python 复制代码
for i in range(5):
    if i < 3:
        pass  # 什么也不做
    else:
        print(i)
# 输出: 3 4

3. 模块和包是什么?

  • 模块 :一个包含Python代码的单个.py文件,可以被导入。
  • :一个包含__init__.py文件的文件夹,里面可以有多个模块。

示例

python 复制代码
# my_module.py
def say_hello():
    print("Hello!")

# 导入模块
import my_module
my_module.say_hello()  # 输出: Hello!

# 包结构
# my_package/__init__.py
# my_package/sub_module.py
from my_package import sub_module

4. range和xrange

  • range():Python 3中返回一个range对象,生成一系列数字,内存占用少。
  • xrange():Python 2中的函数,返回一个迭代器,Python 3中已移除,用range()替代。

示例

python 复制代码
for i in range(5):  # 生成 0, 1, 2, 3, 4
    print(i)

5. dict和items和iteritems的区别

  • dict:字典本身。
  • items():返回字典的键值对视图(Python 3)。
  • iteritems():Python 2中返回键值对迭代器,Python 3中已移除。

示例

python 复制代码
d = {'a': 1, 'b': 2}
print(d.items())  # 输出: dict_items([('a', 1), ('b', 2)])
for k, v in d.items():
    print(k, v)
# 输出:
# a 1
# b 2

6. is和==有什么区别

  • is:检查两个对象是否是同一个对象(内存地址相同)。
  • ==:检查两个对象的值是否相等。

示例

python 复制代码
a = [1, 2]
b = [1, 2]
c = a
print(a == b)  # True,值相等
print(a is b)  # False,不是同一个对象
print(a is c)  # True,同一个对象

7. func和func()有什么区别

  • func:函数对象本身,可以作为变量传递。
  • func():调用函数,执行其中的代码。

示例

python 复制代码
def func():
    print("Hello")
print(func)    # 输出: <function func at ...>
func()         # 输出: Hello

8. any()和all()有什么区别

  • any():如果可迭代对象中任意一个元素为True,返回True。
  • all():如果可迭代对象中所有元素为True,返回True。

示例

python 复制代码
lst = [True, False, True]
print(any(lst))  # True
print(all(lst))  # False

9. 如何检查列表中是否存在值?

可以使用in操作符或list.count()方法。

示例

python 复制代码
lst = [1, 2, 3]
print(2 in lst)      # True
print(lst.count(2))  # 1(出现次数)

10. 讲讲排序吧

Python中对不同数据结构的排序方法不同,常用内置函数sorted()或列表的.sort()方法。

  • 对list排序
    • sort():原地排序,修改原列表。
    • sorted():返回新排序列表,不改原列表。
  • 对set排序:set无序,不能直接排序,需转为list。
  • 对元组排序 :元组不可变,不能用.sort(),需用sorted()转为list。
  • 依赖的包:无需额外包,内置支持。

示例

python 复制代码
# list排序
lst = [3, 1, 2]
lst.sort()           # 原地排序
print(lst)           # [1, 2, 3]
new_lst = sorted(lst, reverse=True)  # 新列表,降序
print(new_lst)       # [3, 2, 1]

# set排序
s = {3, 1, 2}
sorted_s = sorted(s)  # 转为list排序
print(sorted_s)       # [1, 2, 3]

# 元组排序
t = (3, 1, 2)
sorted_t = sorted(t)  # 转为list排序
print(sorted_t)       # [1, 2, 3]
相关推荐
劲雨波21 分钟前
Spring Boot响应压缩配置与优化
java·spring boot·后端
霍珵璁1 小时前
Lua语言的嵌入式安全
开发语言·后端·golang
老马啸西风5 小时前
Occlum 是一个内存安全的、支持多进程的 library OS,特别适用于 Intel SGX。
网络·后端·算法·阿里云·云原生·中间件·golang
冯浩(grow up)10 小时前
Spring Boot 连接 MySQL 配置参数详解
spring boot·后端·mysql
Asthenia041210 小时前
面试复盘:left join 底层算法(嵌套/哈希/分块) & 主从复制(异步/半同步/同步)
后端
秋野酱11 小时前
基于javaweb的SpringBoot雪具商城系统设计与实现(源码+文档+部署讲解)
java·spring boot·后端
计算机-秋大田11 小时前
基于Spring Boot的ONLY在线商城系统设计与实现的设计与实现(LW+源码+讲解)
java·vue.js·spring boot·后端·课程设计
爱的叹息11 小时前
spring boot + thymeleaf整合完整例子
java·spring boot·后端
Asthenia041212 小时前
MySQL:意向锁与兼容性/MySQL中的锁加在什么上?/innodb中锁的底层是怎么实现的?
后端
程序猿DD_12 小时前
如何用Spring AI构建MCP Client-Server架构
java·人工智能·后端·spring·架构