Python论坛  - 讨论区

标题:[python-chinese] 更Pythonic的实现方式

2005年02月04日 星期五 09:42

Qiangning Hong hongqn at gmail.com
Fri Feb 4 09:42:00 HKT 2005

Wang Kebo wrote:
> 以下的代码是从limodou的blog上截下来的。不过,总觉得这段代码不是太优雅,
> 谁可以想到更加pythonic的实现方式?我觉得这样的讨论,能使我们更加熟悉
> python的特性。

[snip]

>     def getHomeDir():
>         ''' Try to find user's home directory, otherwise return current
>     directory.'''
>         try:
>             path1=os.path.expanduser("~")
>         except:
>             path1=""
>         try:
>             path2=os.environ["HOME"]
>         except:
>             path2=""

os.path.expanduser("~") 应该和 os.environ["HOME"]是等价的。

>         try:
>             path3=os.environ["USERPROFILE"]
>         except:
>             path3=""
> 
>         if not os.path.exists(path1):
>             if not os.path.exists(path2):
>                 if not os.path.exists(path3):
>                     return os.getcwd()
>                 else: return path3
>             else: return path2
>         else: return path1

可以简化成:

def getHomeDir():
    path1 = os.environ.get('HOME', '')
    path2 = os.environ.get('USERPROFILE', '')
    return os.path.exists(path1) and path1 \
            or os.path.exists(path2) and path2 \
            or os.getcwd()


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年02月04日 星期五 10:36

cpunion cpunion at 263.net
Fri Feb 4 10:36:47 HKT 2005

是要简洁得多。

不过从我多次测试来看,这样的写法好像速度会慢一些。

Qiangning Hong 写道:

>Wang Kebo wrote:
>  
>
>>以下的代码是从limodou的blog上截下来的。不过,总觉得这段代码不是太优雅,
>>谁可以想到更加pythonic的实现方式?我觉得这样的讨论,能使我们更加熟悉
>>python的特性。
>>    
>>
>
>[snip]
>
>  
>
>>    def getHomeDir():
>>        ''' Try to find user's home directory, otherwise return current
>>    directory.'''
>>        try:
>>            path1=os.path.expanduser("~")
>>        except:
>>            path1=""
>>        try:
>>            path2=os.environ["HOME"]
>>        except:
>>            path2=""
>>    
>>
>
>os.path.expanduser("~") 应该和 os.environ["HOME"]是等价的。
>
>  
>
>>        try:
>>            path3=os.environ["USERPROFILE"]
>>        except:
>>            path3=""
>>
>>        if not os.path.exists(path1):
>>            if not os.path.exists(path2):
>>                if not os.path.exists(path3):
>>                    return os.getcwd()
>>                else: return path3
>>            else: return path2
>>        else: return path1
>>    
>>
>
>可以简化成:
>
>def getHomeDir():
>    path1 = os.environ.get('HOME', '')
>    path2 = os.environ.get('USERPROFILE', '')
>    return os.path.exists(path1) and path1 \
>            or os.path.exists(path2) and path2 \
>            or os.getcwd()
>_______________________________________________
>python-chinese list
>python-chinese at lists.python.cn
>http://python.cn/mailman/listinfo/python-chinese
>
>
>  
>


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号