Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中编写传递命名参数的函数_Python - Fatal编程技术网

在python中编写传递命名参数的函数

在python中编写传递命名参数的函数,python,Python,我正在编写一个office实用程序库,希望通过一个函数中的命名参数提供一个选项。这个函数调用了几个次要函数,但我对如何编写命名参数感到困惑 我正在将命名参数及其默认值传递给要调用的函数(extract(subject,dir,recent_file=False);然后,recent_file的值传递给另一个函数read_rcsd(subject,dir,recent_file)。我相信你应该这样做,尽管我也看到人们在第二个函数中编写recent\u file=recent\u file 导入wi

我正在编写一个office实用程序库,希望通过一个函数中的命名参数提供一个选项。这个函数调用了几个次要函数,但我对如何编写命名参数感到困惑

我正在将命名参数及其默认值传递给要调用的函数(
extract(subject,dir,recent_file=False
);然后,
recent_file
的值传递给另一个函数
read_rcsd(subject,dir,recent_file)
。我相信你应该这样做,尽管我也看到人们在第二个函数中编写
recent\u file=recent\u file

导入win32com.client
作为pd进口熊猫
将zhou_utils.sql作为sql导入
将zhou_utils.oa_vars作为oa导入
将numpy作为np导入
从日期时间导入日期时间
导入操作系统
导入glob
#提取和转换实用程序
“提取”
#定义提取方法
def最新_文件(路径,结尾):
'''
示例用法:
def create_xwalk_df():
xwalk_path=项目_path+r'\Crosswalk'
xwalk=最新的_文件(xwalk_路径,“*CB Crosswalk*”)
返回pd.read_excel(xwalk,nrows=609)#注意:使用最多为灰色的行
:param path:字符串格式为“\Dir”
:param end:字符串形式为“*目标关键字*.xlsx”
:return:最新的文件目录
'''
所有文件=glob.glob(路径+“\\”+结束)
return max(所有_文件,key=os.path.getctime)
def read_rcsd(主题、目录、最近的_文件):
"""
使用Pandas的read_csv读取内部数据集的特定主题。硬编码页眉和页脚长度。
目录是一个参数,用于更改当前下载或测试下载的路径。
:参数主题:字符串|
:param dir:string | R驱动器中的文件目录
:return:DataFrame |下载RCSD主题的数据帧
"""
ATS_头=[2,3,4]
ATS_页脚=19
如果最近的_文件==False:
path=dir+'\\'+主题+'.csv'
其他:
path=latest_file(dir,f“{subject}*.csv”)#如果选择了latest file,则必须格式化文件名才能开始
#与主题一起保存为.csv
#试验
打印(路径)
返回pd.read\U csv(路径,
收割台=ATS_收割台,
skipfooter=ATS_页脚,
engine='python',#使用python作为引擎,因为它支持skipfooter
dtype=str,#将所有值作为字符串读入。请注意,NaN仍将作为浮点输入
保留_default_na=False,#仅将“”解释为NaN值[float],这会阻止以合法名称(如na)读取,因为它实际上不是数字
na_值=“”)#请参阅Pandas文档:“如果keep_default_na为False,并且指定了na_值,则仅使用na_值指定的NaN值进行解析。”
def清洁_csv(df):
'''
创建单个索引列。
:param df:要清理的数据帧
:return:已清理的数据帧
'''
#清除多索引头
def清洁_柱(df):
new_cols=[]
对于df.列中的列:
#创建一个类似于[一个单词,(第一个单词,第二个单词),一个单词,…]的列表
如果列[0]中的“未命名”:
如果列[1]中的“未命名”:
列=(列[2])
其他:
列=(列[1],列[2])
新列附加(列)
#加入列表,使列看起来像[一个单词,第一个单词,第二个单词,一个单词…]
df.columns=[''.join(x)如果类型(x)是tuple else x,则在新列中为x添加x]
清洁柱(df)
#删除第一行,因为它是空的
#df=df[1:]
返回df
def extract(主题、目录、最近的_文件=False):
'''
使用先前定义的函数返回已清理的考试下载。
:参数科目:考试科目
:param dir:directory|
:return:下载
'''
返回clean_csv(read_rcsd(主题、目录、最近的_文件))35; TODO:检查是否需要最近的_文件=最近的_文件
#试验
ScienceDF=extract(“Science”,r'\Downloads\RCSD',最近的_文件=True)

一个是位置参数,一个是关键字参数。两者都可以工作。你之所以会看到最近的文件=最近的文件,大概是因为,如果他们调用外部函数,他们不需要与内部函数交互。包括最近的文件=最近的文件是为阅读你的源代码的人,而不是用户,因此h、 显式比隐式好。