模块引用/ 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]
相关推荐
亚力山大抵4 分钟前
实验六-使用PyMySQL数据存储的Flask登录系统-实验七-集成Flask-SocketIO的实时通信系统
后端·python·flask
超级小忍14 分钟前
Spring Boot 中常用的工具类库及其使用示例(完整版)
spring boot·后端
CHENWENFEIc1 小时前
SpringBoot论坛系统安全测试实战报告
spring boot·后端·程序人生·spring·系统安全·安全测试
重庆小透明1 小时前
力扣刷题记录【1】146.LRU缓存
java·后端·学习·算法·leetcode·缓存
博观而约取2 小时前
Django 数据迁移全解析:makemigrations & migrate 常见错误与解决方案
后端·python·django
寻月隐君3 小时前
Rust 异步编程实践:从 Tokio 基础到阻塞任务处理模式
后端·rust·github
GO兔3 小时前
开篇:GORM入门——Go语言的ORM王者
开发语言·后端·golang·go
Sincerelyplz3 小时前
【Temproal】快速了解Temproal的核心概念以及使用
笔记·后端·开源
爱上语文3 小时前
Redis基础(6):SpringDataRedis
数据库·redis·后端
Lemon程序馆3 小时前
速通 GO 垃圾回收机制
后端·go