Python直接用字典数组导入到函数的非固定参数

正好是学logging模块的时候遇到的。代码是这样的:

logging.basicConfig(filename=‘test.log‘,
                    level=logging.DEBUG,
                    format=‘%(name)s %(asctime)s %(module)s-%(lineno)d [%(levelname)s]:%(message)s‘,
                    datefmt=‘%Y-%m-%d %H:%M:%S‘)
logging.warning(‘test warning‘)
logging.info(‘test info‘)
logging.debug(‘test debug‘)

上面的logging.basicConfig()要一堆参数,而且实验了一下,貌似必须得用关键参数,不能偷懒。于是好奇看了一下help

import logging
help(logging.basicConfig)
# 下面是help的头2行,后面就不贴了
Help on function basicConfig in module logging:
basicConfig(**kwargs)  # 这里原来用的是非固定参数

一看,整个就是非固定参数,那么只能老实的一个一个写了。但是一想,这里**kwargs会把多传入的关键参数变成一个字典,那么问题来了:

既然要变成字典,那我直接定义个字典,传个字典进去呗。

import logging
# 想着把参数做定义成一个常量,放到配置文件里或者文件开头。另外format太长了先单独写。
LOG_FORMAT = ‘%(asctime)s %(module)s-%(lineno)d [%(levelname)s]:%(message)s‘
LOG_KWARGS = {‘filename‘:‘test.log‘,
              ‘level‘:logging.DEBUG,
              ‘format‘:LOG_FORMAT,
              ‘datefmt‘:‘%Y-%m-%d %H:%M:%S‘}
logging.basicConfig(**LOG_KWARGS)  # 字典前也加上**就能传入字典作为参数了
logging.warning(‘test warning‘)
logging.info(‘test info‘)
logging.debug(‘test debug‘)

既然字典能这么传参,那么数组也一样了。

def deal_list(*args):
    print(args)
def deal_dic(**kwargs):
    print(kwargs)
deal_list(*[1,2,3,4,5])  # *args是把参数都变成元组,所以这里打印出来得是一个元组
deal_dic(**{‘a‘:1,‘b‘:2})
时间: 2024-10-10 06:20:17

Python直接用字典数组导入到函数的非固定参数的相关文章

函数的非固定参数,默认参数,参数组

默认参数: 也可以给默认参数赋值,这个时候就取代了默认的值了: 默认参数的特点:调用函数的时候,默认参数非必须传递: 作用:1.自定义安装软件,默认安装值: 2.连接数据库的参数:比如默认端口号3306 参数组: *args,这个就是参数组,前面有一个星号*,后面可以跟任意字母,定义一个参数组. 接受多个实参,然后把实参放到一个元祖里去.下面的列表作为实参,也是可以的.不过都是转换为元祖. 也可以这么应用,如下图: 如果传输字典实参到函数,可以如下:**kwargs,两个*.把N个关键字参数,转

函数的非固定参数

默认参数特点:调用函数的时候,默认参数非必需传递 def test(x,y=2): #定义默认参数y=2 print(x) print(y) test(1,3) 输出: 1 3

函数-非固定参数

# 刚才你写的报警,发给某个人. def send_alert(msg,user) #那如果公司规模扩大了,要求发给10个人或更多怎么办呢? #难道你要重复敲10行或更多的代码? def send_alert(msg,user1) def send_alert(msg,user2) def send_alert(msg,user3) def send_alert(msg,user4) . . . #其实不用这么麻烦! def send_alert(msg,*users) send_alert('

python学习第三周(下 函数)

本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值  嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测试, 交集\差集\并集\反向(对称)差集 2. 元组 只读列表,只有count, index 2 个方法 作用:如果一些数据不想被人修改, 可以存成元组,比如身份证列表 3. 字典 key-value对 特性: 无顺序 去重 查询速度快,比列表快多了 比list占用内存多 为什么会查询速度会快呢?

python基础 函数定义 返回值 参数

函数定义 1 #python中函数定义.def函数定义的关键字,fun1函数名,x为函数的形参可以有多个,多个之间用“,”隔开:return 函数返回值的关键字,python中return可以是非必要 2 def fun1(x): 3 x += 1 4 return x 函数返回值 1 # 函数返回值可以有多个,之间使用“’”分隔,返回值讲多个值组成的元组进行返回. 当无return时python会隐式return “None”,如果只返回一个值就返回这个值本身 2 def fun2(x, y)

Python-Day3 Python基础进阶之集和/文件读写/函数

一.集和 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 1.创建集合 >>> s = set([3,5,9,10]) #创建一个数值集合 >>> t = set("Hello") #创建一个唯一字符的集合 >>> s {9, 10, 3, 5} >>> t {'e', 'H', 'l', 'o'} #集和自动去重

[转]函数getopt(),及其参数optind

getopt被用来解析命令行选项参数. #include <unistd.h>       extern char *optarg;  //选项的参数指针       extern int optind,   //下一次调用getopt的时,从optind存储的位置处重新开始检查选项.        extern int opterr,  //当opterr=0时,getopt不向stderr输出错误信息.       extern int optopt;  //当命令行选项字符不包括在opt

函数getopt(),及其参数optind

getopt被用来解析命令行选项参数. #include <unistd.h>       extern char *optarg;  //选项的参数指针       extern int optind,   //下一次调用getopt的时,从optind存储的位置处重新开始检查选项.        extern int opterr,  //当opterr=0时,getopt不向stderr输出错误信息.       extern int optopt;  //当命令行选项字符不包括在opt

带有“非简单参数”的函数为什么不能包含 &quot;use strict&quot; 指令

非简单参数就是 ES6 里新加的参数语法,包括:1.默认参数值.2.剩余参数.3.参数解构.本文接下来要讲的就是 ES7 为什么禁止在使用了非简单参数的函数里使用 "use strict" 指令: function f(foo = "bar") { "use strict" // SyntaxError: Illegal 'use strict' directive in function with non-simple parameter li