繁体   English   中英

在另一个 function (Python)中使用来自一个 function 的变量的最佳方法是什么?

[英]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())

更多关于这里的课程: https://docs.python.org/3/tutorial/classes.html

您正在寻找的是return语句,您可以使用它来将 function 的 output 分配给变量。

在这里,我们将返回一个元组并使用多重赋值来调用元组nameemail中的值:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM