从一个函数获取返回值并在另一个函数上使用

2024-03-29 01:53:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python做一些看起来很基本的事情,但我觉得我想得太多了。你知道吗

我试图从create_password()得到password的返回值,并在store_password()中使用它,我把<<HERE>>

我怎样才能做到这一点?你知道吗

def create_password(self):
    characters = string.ascii_letters + string.punctuation  + string.digits
    password =  "".join(choice(characters) for x in range(self.pass_char) )
    return (password)

def store_password(self):
    try:
        connection = sqli.connect('pw.db')
    except:
        print("Error occurred!")

    with connection:
        cur = connection.cursor()
        cur.execute('''
                    CREATE TABLE IF NOT EXISTS my_passwords(
                    id INT PRIMARY KEY AUTOINCREMENT,
                    password text
                    '''
        )
        cur.execute('INSERT INTO my_passwords VALUES(?)', <<HERE>>)

谢谢你。你知道吗


Tags: storeselfexecutestringheremydefcreate
3条回答

这基本上是使用您已经构建的函数create_password(self),并且假设它们都属于同一个类,您应该能够在第二个函数store_password(self)中调用create_password(self)

因此,要返回您创建的密码,只需调用create_password(self)来代替<<HERE>>。你知道吗

tabac所建议的方法也将起作用,但是您需要确保方法create_password(self)必须在调用之前被调用,以便self.password变量被赋值。你知道吗

你的代码会变成

cur.execute('INSERT INTO my_passwords VALUES(?)', self.create_password(self))

我假设这两个方法都属于同一个类。如果是这样,您可以将password附加到类实例并在store_password中使用它。用self来表示。你知道吗

def create_password(self):
    # code...
    self.password = password

def store_password(self):
    # Access password by doing self.password

假设两个函数都在同一个类中,在本例中调用MyPasswordMaker。你知道吗

可以将密码作为参数传递:

def store_password(self, password):
    try:
        connection = sqli.connect('pw.db')
    except:
        print("Error occurred!")

    with connection:
       cur = connection.cursor()
        cur.execute('''
                    CREATE TABLE IF NOT EXISTS my_passwords(
                    id INT PRIMARY KEY AUTOINCREMENT,
                    password text
                    '''
        )
        cur.execute('INSERT INTO my_passwords VALUES(?)', password)


myPasswordMaker = MyPasswordMaker()
password = myPasswordMaker.create_password()
myPasswordMaker.store_password(password)

也可以将密码存储在类变量中

class MyPasswordMaker:
    def create_password(self):
        characters = string.ascii_letters + string.punctuation  + string.digits
        self.password =  "".join(choice(characters) for x in range(self.pass_char) )

    def store_password(self):
        try:
            connection = sqli.connect('pw.db')
        except:
            print("Error occurred!")

        with connection:
            cur = connection.cursor()
            cur.execute('''
                CREATE TABLE IF NOT EXISTS my_passwords(
                id INT PRIMARY KEY AUTOINCREMENT,
                password text
                '''
            )
        cur.execute('INSERT INTO my_passwords VALUES(?)', self.password)

或者在存储密码()中调用创建密码()

cur.execute('INSERT INTO my_passwords VALUES (?)', self.create_password())

相关问题 更多 >