在下面的代码中,“ roll_counts”已用作第一个函数的返回值,然后用作第二个函数的参数。我的问题是,如果我将第二个函数的参数roll_counts更改为ABC并将其roll_counts保留在第一个函数中,代码仍然可以正常工作。我知道圆括号中的roll_counts = 6,但是如何?以及为什么当我没有结果不变 我是python和编程的新手,在此先感谢
import random as rd
def simulate_dice_rolls(N):
roll_counts = [0,0,0,0,0,0]
for i in range(N):
roll = rd.choice([1,2,3,4,5,6])
index = roll - 1
roll_counts[index] = roll_counts[index] + 1
return roll_counts
def show_roll_data(roll_counts):
number_of_sides_on_die = len(roll_counts)
for i in range(number_of_sides_on_die):
number_of_rolls = roll_counts[i]
number_on_die = i+1
print(number_on_die, "came up", number_of_rolls, "times")
roll_data = simulate_dice_rolls(1000)
show_roll_data(roll_data)
答案 0 :(得分:0)
roll_counts
中的 show_roll_data(roll_counts)
是参数的名称,在show_roll_data
函数的整个作用域中都可以访问。它的值是从调用roll_data
中的show_roll_data(roll_data)
传入的,与simulate_dice_rolls
中定义的同名本地变量无关。因此,您可以将roll_counts
中的show_roll_data
重命名为任何名称,并且仍然可以使用。
答案 1 :(得分:0)
blhsing的答案是正确的。 但是在接受该答案之前,您需要了解变量范围。 python中有全局变量和局部变量。 并且局部变量绑定在函数中。 如果函数中的全局变量与局部变量相同,则使用局部变量而不会影响全局变量。 由于roll_counts是simulate_dice_rolls的局部变量,因此您无需在show_roll_data中考虑roll_counts。