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

时间:2018-03-07 16:40:26

标签: python function variables parameters arguments

我试图调用我创建的一组子程序,这些子程序使用来自其他子程序的参数。例如,变量'username'应该能够传递给'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' "

如何正确调用?,提前致谢。

1 个答案:

答案 0 :(得分:0)

有两种方法可以做到这一点。

一:您需要在调用db_username_earcher()之前添加一行代码,其中catchreturn signer()编辑为list global多个变量。然后,您可以使用列表索引或您指定用于捕获用户名的变量来传递用户名。

二:你可以使用signer()个变量,你的catch函数可以简单地覆盖用户名,这样你就可以毫无困难地传递用户名。

编辑(回应评论):

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

关于列表方法,我的意思是您需要username列表而不是三个变量,然后您可以使用your_caught_list[0]直接引用 protected void Application_AuthenticateRequest(object sender, EventArgs e) { if (Context.Request.Headers.AllKeys.Contains("Origin")) { Context.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost:57062"); Context.Response.AddHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); Context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, PATCH, OPTIONS"); Context.Response.AddHeader("Access-Control-Allow-Credentials", "true"); if (Context.Request.HttpMethod == "OPTIONS") Context.Response.End(); } }