研究odoo代码的时候发现其中有一行语句让人费解
self.rcfile = os.path.abspath(
self.config_file or opt.config or os.environ.get('ODOO_RC') or os.environ.get('OPENERP_SERVER') or rcfilepath)
or 关键字除了是一种逻辑运算符还是什么??
代表这几种数值来源中的一种吗?优先级如何确定?
带着问题找答案
代码
1 print(False or None or 'hello' or 'hello world' or False or 'gill' or 'gorot' or None)
程序输出:
C:\Python\Python35\python.exe C:/Users/hello/PycharmProjects/LearnPy/base.py
hello
Process finished with exit code 0
结论:
or操作符在此种情形下表示的语义是找到第一个非空/非逻辑非的对象,应该不光适用于字符串类型