繁体   English   中英

使用其他函数中的变量作为参数/参数来调用函数

[英]Calling a function using variables from other functions as parameters/arguments

我正在尝试调用我创建的一组子例程,这些子例程使用其他子例程的参数。 例如,变量“用户名”应该能够传递到“ db_username_searcher”中。

def signer():           
  def login():
    username = entry_user.get()  
    password = entry_user.get()  
    if username in admin_array:
        admin_pass = 'pass'  

    return username, password, admin_pass


win = tkinter.Tk()
win.title('Sign In')  
win.geometry('800x800') 
lbl_user = tkinter.Label(win, text='Username ')  
entry_user = tkinter.Entry(win)

lbl_pwd = tkinter.Label(win, text='Password ')
entry_pwd = tkinter.Entry(win, show='x')  
lbl_output = tkinter.Label(win)
btn_signin = tkinter.Button(win, text='Sign in', command=login)
lbl_user.pack()
entry_user.pack()
lbl_pwd.pack()
entry_pwd.pack()
lbl_output.pack()
btn_signin.pack()
entry_user.focus_set()

win.mainloop()

这是分配和返回“用户名”的代码:

def db_username_sercher(username, password):

conn = sqlite3.connect('passwordDbase.db')
c = conn.cursor()
c.execute("SELECT * FROM passwordDb WHERE employee_username=?", (username, ))

r = c.fetchone()

if r:
    message = 'correct'

else:
    message = ' '

if message == 'correct':
    dbpassword = c.execute("SELECT employee_password FROM passwordDb WHERE employee_username=?", (username, ))
    if dbpassword == password:
        message = 'correct'

    else:
        message = ' '

conn.commit()
c.close()
conn.close()
return message

当我尝试调用这两个函数时,我不知道如何处理参数:

signer()
db_username_searcher(username, password)

"unresolved reference 'password' "

我该如何正确称呼?,在此先感谢。

您可以通过两种方式执行此操作。

一:您需要添加一行代码的调用之前db_username_earcher()catch所有的变量return由Ed signer()到一个list /多个变量。 然后,您可以使用列表索引或分配给捕获用户名的变量来传递用户名。

二:您可以使用global变量,并且signer()函数可以简单地覆盖用户名,以便您可以轻松传递用户名。

编辑(回应评论):

catch变量,可以执行a, b, c = signer() ,其中a包含username的值。

关于list方法,我的意思是您需要return一个列表而不是三个变量,然后您可以使用your_caught_list[0]直接引用username

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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