Python常用技能汇总
- 这里是一些写python脚本时常用的小技巧,长期更新
咕咕咕
获取脚本目录
- 脚本运行时相对路径时基于命令行的路径.这样直接在脚本里使用相对路径会出现问题.我们可以使用如下方法获得脚本所在的绝对路径,以及脚本本身的文件名.
1 2
import os WORK_PATH,FILE_NAME=os.path.split(os.path.abspath(__file__))
- WORK_PATH中就存储了脚本所在的绝对路径
- FILE_NAME中就是脚本名称
获取Windows用户目录
- 有时我们需要获取用户默认的下载目录,或者是文档目录等等
1 2 3
import os USER_PATH=os.path.expanduser("~") DOWNLOAD_PATH=ps.path.join(os.path.expanduser("~"),"Download")
- USER_PATH中存储了用户目录的绝对路径
- DOWNLOAD_PATH中存储了用户默认下载目录(如果用户没有自己重命名这个文件夹的话)
Python参数传递中的*args以及**kwargs
事实上真正的python参数传递语法是* 和 **。*args和**kwargs是我们一种约定俗成的写法。
*args
*args用来表示函数接受可变长度的 非关键字 参数作为函数的输入
1 2 3 4 5 6 7
def test(normal_arg, *args): print("first normal arg:"+normal_arg) for i,x in enumerate(args): print("{} arg is {}".format(i+1,x)) test("normal","a","b","c","d")
样例输出
1 2 3 4 5
first normal arg:normal 1 arg is a 2 arg is b 3 arg is c 4 arg is d
**kwargs
- **kwargs表示函数接受可变长度的关键字参数字典作为参数,即可以简单的理解为传入的是字典参数
1 2 3 4 5 6 7 8
def test(**kwargs): if kwargs is not None: for key, value in kwargs.iteritems(): print("{} = {}".format(key,value)) # Or you can visit kwargs like a dict() object # for key in kwargs: # print("{} = {}".format(key, kwargs[key])) test(name="python", value="5")
- 样例输出
1 2
name = python value = 5
- **kwargs表示函数接受可变长度的关键字参数字典作为参数,即可以简单的理解为传入的是字典参数
What's more
我们也可以使用这两个参数来调用一般参数格式的函数
1 2 3 4 5 6 7 8 9 10 11
def func(arg1,arg2,arg3): print("arg1: " + arg1) print("arg2: " + arg2) print("arg3: " + arg3) args_list=("python",2,3) func(*args_list) print("==================") kwargs_dict={"arg3": 3, "arg1": "python", "arg2": 2} func(**kwargs_dict)
样例输出:
1 2 3 4 5 6 7
arg1: python arg2: 2 arg3: 3 ================== arg1: python arg2: 2 arg3: 3