我正在研究一个项目,我不知道如何避免使用全局变量。我有一个执行位和碎片的函数列表,但我无法在它们之间传递变量!
这是我目前的代码:
===================
def player_names_input():
global player_A_name,player_B_name
player_A_name = raw_input("Please enter name for Player A : ")
player_B_name = raw_input("Please enter name for Player B : ")
def coin_flip():
global player_A_name,player_B_name,start_player,end_player,game_state
game_state = "running"
import random
print "\nFlipping a coin to see who starts first..."
random_int = random.randint(0, 1)
if random_int == 0:
coin = 'Heads'
start_player = player_A_name
end_player = player_B_name
else:
coin = 'Tails'
start_player = player_B_name
end_player = player_A_name
print '\nCoin flip --> ',coin
print '\nStarting player --> ',start_player
print '\nStarting player gets "X"'
player_names_input()
coin_flip()
这是我尝试使用return而不是global:
=============================================== ==========
def player_names_input():
player_A_name = raw_input("Please enter name for Player A : ")
player_B_name = raw_input("Please enter name for Player B : ")
return player_A_name,player_B_name
def coin_flip(player_A_name,player_B_name):
game_state = "running"
import random
print "\nFlipping a coin to see who starts first..."
random_int = random.randint(0, 1)
if random_int == 0:
coin = 'Heads'
start_player = player_A_name
end_player = player_B_name
else:
coin = 'Tails'
start_player = player_B_name
end_player = player_A_name
print '\nCoin flip --> ',coin
print '\nStarting player --> ',start_player
print '\nStarting player gets "X"'
player_names_input()
coin_flip(player_A_name,player_B_name)
1-请帮助我的第二个代码运行,我真的想避免全局变量,因为每个人都建议。 2-请批评我的代码,我在开始,我正在努力学习编写好的代码(而不仅仅是代码)。我的尝试有多糟糕?
答案 0 :(得分:1)
由于您已定义player_names_input()
以返回2元组(两个值,player_A_name
和player_B_name
),您可以在您使用的范围内分配它们功能,
player_A_name, player_B_name = player_names_input()
现在,当调用它时:
coin_flip(player_A_name, player_B_name)
这两个变量可供使用。
您可能需要考虑将实际主程序包装在主要方法中,如
def main():
player_A_name, player_B_name = player_names_input()
coin_flip(player_A_name, player_B_name)
并且如果直接执行该文件,则调用此方法 - 通过将魔术__name__
变量检查为等于字符串'__main__'
来完成此操作,因此将其添加到程序文件的末尾。< / p>
if __name__ == '__main__':
main()