I have a Python application where the same ArcPy functions are called 20+ times. I have begun constructing a method for this application to make the code more readable and Pythonic. However I have gotten stuck and need a bit of assistance in moving forward with what I have. The objective of this application is to create a feature layer, summary stats table, and join to another feature class. I am working with a polygon and line feature layer and a polygon feature class that I am executing the join on. The unique parameters for each ArcPy function are where clauses, output summary statistics tables, statistics fields, polygon layer to join to, and fields to keep from the join. My example is below, what needs to be added/modified to this so that I can successfully add the my other parameters to my SummaryStats function to execute the method for all other parameters, i.e. whereclauses, feature classes etc.
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">import</SPAN> DistrictConfig
<SPAN class="keyword token">import</SPAN> logging
<SPAN class="keyword token">import</SPAN> logging<SPAN class="punctuation token">.</SPAN>handlers
<SPAN class="keyword token">import</SPAN> ConfigParser
LOGGER_NAME <SPAN class="operator token">=</SPAN> <SPAN class="string token">'korterra_district'</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> <SPAN class="string token">"C:\KorTerraTables\tables_db.gdb"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>overwriteOutput <SPAN class="operator token">=</SPAN> <SPAN class="token boolean">True</SPAN>
<SPAN class="keyword token">from</SPAN> datetime <SPAN class="keyword token">import</SPAN> datetime
startTime <SPAN class="operator token">=</SPAN> datetime<SPAN class="punctuation token">.</SPAN>now<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
logger <SPAN class="operator token">=</SPAN> logging<SPAN class="punctuation token">.</SPAN>getLogger<SPAN class="punctuation token">(</SPAN>LOGGER_NAME<SPAN class="punctuation token">)</SPAN>
distfc <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>distfc
linefc <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>linefc
polyfc <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>polyfc
totalexpression <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>TotalExpression
totalscline <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>TotalSCLine
totalscpoly <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>TotalSCPoly
statsfield <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>StatsField
fields <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>fields
totalCalc <SPAN class="operator token">=</SPAN> DistrictConfig<SPAN class="punctuation token">.</SPAN>TotalCalc
<SPAN class="keyword token">class</SPAN> <SPAN class="token class-name">GeodatabaseConnection</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="string token">""" Defines a connection to a geodatabase """</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">__init__</SPAN><SPAN class="punctuation token">(</SPAN>DistrictConfig<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">DistrictFunction</SPAN><SPAN class="punctuation token">(</SPAN>DistrictConfig<SPAN class="punctuation token">,</SPAN> distfc<SPAN class="punctuation token">,</SPAN> linefc<SPAN class="punctuation token">,</SPAN> totalexpression<SPAN class="punctuation token">,</SPAN> totalscline<SPAN class="punctuation token">,</SPAN> statsfield<SPAN class="punctuation token">,</SPAN> fields<SPAN class="punctuation token">,</SPAN> totalCalc<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"Calculating Total Line Tickets per District"</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>linefc<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"line_layer_test_total"</SPAN><SPAN class="punctuation token">,</SPAN> totalexpression<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Statistics_analysis<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"line_layer_test_total"</SPAN><SPAN class="punctuation token">,</SPAN> totalscline <SPAN class="punctuation token">,</SPAN> statsfield<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"DISTRICT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>JoinField_management<SPAN class="punctuation token">(</SPAN>distfc<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NAME"</SPAN><SPAN class="punctuation token">,</SPAN> totalscline<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"DISTRICT"</SPAN><SPAN class="punctuation token">,</SPAN> fields<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">with</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>UpdateCursor<SPAN class="punctuation token">(</SPAN>distfc<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"FREQUENCY"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> cursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> row <SPAN class="keyword token">in</SPAN> cursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">==</SPAN> None<SPAN class="punctuation token">:</SPAN>
row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> <SPAN class="number token">0</SPAN>
cursor<SPAN class="punctuation token">.</SPAN>updateRow<SPAN class="punctuation token">(</SPAN>row<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#Calculate and Join Totals per District Polys</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>MakeFeatureLayer_management<SPAN class="punctuation token">(</SPAN>polyfc<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"poly_layer_test_total"</SPAN><SPAN class="punctuation token">,</SPAN> totalexpression<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Statistics_analysis<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"poly_layer_test_total"</SPAN><SPAN class="punctuation token">,</SPAN> totalscpoly <SPAN class="punctuation token">,</SPAN> statsfield<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"DISTRICT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>JoinField_management<SPAN class="punctuation token">(</SPAN>distfc<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NAME"</SPAN><SPAN class="punctuation token">,</SPAN> totalscpoly<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"DISTRICT"</SPAN><SPAN class="punctuation token">,</SPAN> fields<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">with</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>UpdateCursor<SPAN class="punctuation token">(</SPAN>distfc<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"FREQUENCY_1"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> cursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> row <SPAN class="keyword token">in</SPAN> cursor<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">==</SPAN> None<SPAN class="punctuation token">:</SPAN>
row<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> <SPAN class="number token">0</SPAN>
cursor<SPAN class="punctuation token">.</SPAN>updateRow<SPAN class="punctuation token">(</SPAN>row<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CalculateField_management<SPAN class="punctuation token">(</SPAN>distfc<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"TOTAL_LONG"</SPAN><SPAN class="punctuation token">,</SPAN> TotalCalc<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>DeleteField_management<SPAN class="punctuation token">(</SPAN>distfc<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">"FREQUENCY"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"FREQUENCY_1"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">SummaryStats</SPAN><SPAN class="punctuation token">(</SPAN>DistrictConfig<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
DistrictFunction<SPAN class="punctuation token">(</SPAN>DistrictConfig<SPAN class="punctuation token">,</SPAN> distfc<SPAN class="punctuation token">,</SPAN> linefc<SPAN class="punctuation token">,</SPAN> totalexpression<SPAN class="punctuation token">,</SPAN> totalscline<SPAN class="punctuation token">,</SPAN> statsfield<SPAN class="punctuation token">,</SPAN> fields<SPAN class="punctuation token">,</SPAN> totalCalc<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">except</SPAN> Exception <SPAN class="keyword token">as</SPAN> e<SPAN class="punctuation token">:</SPAN>
logger<SPAN class="punctuation token">.</SPAN>info<SPAN class="punctuation token">(</SPAN>e<SPAN class="punctuation token">.</SPAN>message<SPAN class="punctuation token">,</SPAN> exc_info<SPAN class="operator token">=</SPAN><SPAN class="token boolean">True</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">raise</SPAN> e
<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>