如何在 python 中正确初始化变量

How to properly initialize a variable in python

我试着搜索一下,然后在这里问它,但从我搜索的内容来看,似乎并没有以我想的形式被问到。

举个简单的例子,假设我有一个整数列表 [1, 2, 3, 4, 5],我想遍历该列表并保存可被 2 整除的最大数字。 (是的,如果列表未排序,此代码将不起作用,但为了示例,假设所有列表均按编号顺序排列)

nums = [1, 2, 3, 4, 5]

for number in nums:
    if number % 2 == 0:
        max_num = number

print(str(max_num))

在这个例子中,我可以毫无问题地打印 max_num。但是,如果列表 nums 是 [1, 3, 5],例如,max_num 将永远不会被设置,我将引用一个我从未实例化的变量。

我的问题是如何在循环之前正确设置变量?换句话说,您是否需要在设置变量之前描述变量的数据类型,类似于 Java 和 C++?有必要吗?

我最近在做的事情是这样的:

nums = [1, 2, 3, 4, 5]
max_num = None      # <- added this

for number in nums:
    if number % 2 == 0:
        max_num = number

if max_num is not None:     # <- added if statement
    print(str(max_num))

但我觉得会有更好的方法。我也有尝试这个的想法:

nums = [1, 2, 3, 4, 5]
max_num = int          # <- this was changed

for number in nums:
    if number % 2 == 0:
        max_num = number

print(str(max_num))

这种方式的问题是 max_num type(int),我认为这也不正确。

如有任何反馈,我们将不胜感激。

编辑:我并不是专门为我的示例寻找解决方案,而是寻找一种设置变量的 pythonic 方式。

您的第一个示例完全符合您的需要。它确实将默认值 None 分配给 max_num.

您不需要专门检查 max_num 是否不是 None。如果列表中包含任何可被 2 整除的值,它将被分配给 max_num。如果不是,max_num 将是 None(默认值),这意味着 - 列表中不存在可被 2 整除的数字。

nums = [1, 3, 5]
max_num = None      # <- added this

for number in nums:
    if number % 2 == 0:
        max_num = number

print(max_num)

以上代码,如果

nums = [1, 3, 4, 5] - Returns 4 -> Max. number divisible by 2 exists
nums = [1,3,5] - Returns None -> No number divisible by 2 exists.