将return作为参数传递给另一个函数

时间:2018-09-19 06:54:35

标签: python

在下面的代码中,“ 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)

2 个答案:

答案 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。