背景
之前一直没怎么自己写过函数,后来程序太大了,不用函数分块的话,显得比较乱
问题来了,之前一直停留在理解的层次,只是能够看懂别人写的函数代码,自己亲自动手一写就抓瞎了
昨天晚上反复检查了半天,也没发现问题所在,今天经过师兄的指点,恍然大悟
这个故事告诉我们要是要多多交流,不懂就问,很多时候自己琢磨半天也弄不明白,可能别人指点一下就清楚了。
talk is cheap,show me code
Error : all_opentimes is not defined
定义与调用
#基本的函数框架
def function_1():
return a
def function_2():
return b
def function_3():
return c
if __name__ == '__main__':
function_1()
function_2()
function_3()
上述代码是基本的函数框架,
if name == ‘main’: #这个后面是调用函数的代码行,是主干,依次运行function_1,function_2,function_3
这是一种运行方式
但是我昨天写的代码有点不一样,我的function_2中用到了function_1中的处理结果。但我还是按上述代码写的,自然就运行不了。
需要这样修改
#基本的函数框架
def function_1():
return a
def function_2():
a = function_1()
return b
def function_3():
return c
if __name__ == '__main__':
function_1()
function_2()
function_3()
需要在function_2中调用function_1,并且需要创建一个变量来储存这个调用值
当然函数还有形参和实参的概念,形参就是def function_1() 括号里面的参数,实参是主干中 调用代码行括号里面的参数,比如
#基本的函数框架
def function_1(形参1):
a = 形参1
return a
def function_2():
a = function_1(形参2)
return b
def function_3(形参3):
return c
if __name__ == '__main__':
function_1(实参1)
function_2(实参2)
function_3(实参3)
实参是输入的参数,方便我后续随意更改输入参数
形参就是参与这个函数运算的参数,作为一个接口,当没有输入参数时,形参和实参都可以空着
昨日代码
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
import os
from datetime import datetime
import matplotlib.pyplot as plt
import re
import time
def readfile(months,last_days):
#months = ['01', '02', '03', '04',