[英]What is the best way to use a variable from one function in another function (Python)?
我正在尝试编写一些非常简单的代码,但不知道如何使用我在第一个 function 和第二个 function 中声明的变量。 你可能有什么想法?
import random
def request_info():
name = input("What is your name?: ")
email = input("What is your email?: ")
def print_user_info():
print("Your name " + name)
print("Your email " + email)
num = random.randrange(100_000, 10**8)
我将创建一个 class:
import random
class request_info(object):
def __init__(self):
self.name = input("What is your name?: ")
self.email = input("What is your email?: ")
def print_user_info(self):
print("Your name " + self.name)
print("Your email " + self.email)
num = random.randrange(100_000, 10**8)
return num
r = request_info()
r.print_user_info()
# What is your name?: Test
# What is your email?: Test@gmail.com
# Your name Test
# Your email Test@gmail.com
# 90584743
我只是将变量传递到另一个 function 中,如下面的代码所示:
import random
def print_user_info(name,email):
print("Your name " + name)
print("Your email " + email)
num = random.randrange(100_000, 10**8)
def request_info():
name = input("What is your name?: ")
email = input("What is your email?: ")
print_user_info(name,email)
当然,您还必须调用request_info
function 一次,以便调用另一个 function。
有几种方法可以做到这一点,但您应该首先考虑 scope。
最肮脏的方法是声明一个全局变量,该变量将在 function 之外设置,然后在 function 中分配。
global someVariable
someVariable = None
someVariable2
someVariable2 = None
def someFunction():
global someVariable
someVariable = 12
global someVariable2
someVariable2 = 24
someFunction()
print(someVariable)
这会让你顺利通过,但这不是处理变量的最佳方式。 如果你写的只是 11 行左右的代码,它就可以解决问题。
退货是另一种处理方式。
def someFunction():
someVariable = 4
someVariable2 = 13
return (someVariable,someVariable2)
print(someFunction())
通过让 function 返回一个元组,您可以让下一个 function 可以访问这两个变量。
最后,还有课。 对于更复杂的代码,我会推荐 Classes,因为它将内容保存在一个漂亮整洁的小容器中。
class myClass:
someVariable = None
someVariable2 = None
def __init__(self):
self.someVariable = 50
self.someVariable2 = -12
def retValues(self):
someVariable = self.someVariable
someVariable2 = self.someVariable2
return (someVariable,someVariable2)
print(myClass().retValues())
您正在寻找的是return
语句,您可以使用它来将 function 的 output 分配给变量。
在这里,我们将返回一个元组并使用多重赋值来调用元组name
和email
中的值:
import random
def request_info():
name = input("What is your name?: ")
email = input("What is your email?: ")
return (name, email) # this function now 'returns' this tuple
def print_user_info(name, email):
print("Your name " + name)
print("Your email " + email)
num = random.randrange(100_000, 10**8)
因此,如果您运行以下命令:
name, email = request_info()
print_user_info(name, email)
(为清楚起见,这是上面第一行中发生的事情,但您可以将其合并为 1 行而不是 3 行)
user_info = request.info()
name = user_info[0]
email = user_info[1]
你的程序会像这样运行:
What is your name?: Joe Smith
What is your email?: jsmith@gmail.com
Your name Joe Smith
Your email jsmith@gmail.com
这是一种方法。 使用 class 可以帮助共享变量和函数。
import random
class User:
def __init__(self, name, email):
self.name = name
self.email = email
self.num = random.randrange(100_000, 10**8)
def print_info(self):
print(f"Your name is: {self.name} \nYour email is: {self.email}")
new_user = User(input("What is your name?"), input("What is your email?"))
new_user.print_info()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.