# 三种编程的方法论 # 面向对象 :类 class # 面向过程 :过程 def # 函数式编程 :函数 def 最早的,但是现在又流行了 import time #函数式编程 def func1(): #():内可以定义形参 '''Testing codes''' #这个是文件的描述,非常重要一定要写 #之后加入程序的逻辑代码 print('testing code') #这里简单一点 return 0 #定义返回值,这里可以return很多东西 #定义过程 def func2(): '''For the processing''' print('testing processing code') #这个是没有返回值的 x = func1() y = func2() print(x) #这里就有返回值了 print(y) #这个是没有返回值的,就是None,就是 #可以看出这个实际就是说python自动将过程的返回定义为None。 if y == None: print('The return code is None!') def open_file(date_now1, time_now1): '''Used to open files''' with open('testing.txt', 'a') as file: file.write('Today is {date1}, and now is {time1} '.format(date1=date_now1, time1= time_now1)) #这里注意,字符串用’%n'% xx 这个形式,只能使用int参数,不能用字符串 #字符串要用{}和format return 0 def ipt_info(): "Import time and date information!" date_now = "%Y-%m-%d %X" time_now = time.strftime(date_now) #这个功能是用date_now 的参数形式返回电脑里面的时间 print(date_now, time_now) open_file(date_now, time_now) return date_now, time_now, '可以有很多的输出,还可以是列表和字典,虽然实际是一个' print(ipt_info()) def calu1(a, b ,c): """Calculate numbers and make a jugement.""" d = a + b + c if d <20: return d else: return "It's too large" print(calu1(5, 6, 79)) #这个结果就证明了return可以在if的判断里面使用 def calu1(a, b ,c= 6): #这样就是有一个默认的值,这样,你如果不输入一个参数,这个参数就是这样的 """Calculate numbers and make a jugement.""" d = a + b + c if d <20: return d else: return "It's too large" print(calu1(5, 6)) #这个结果就证明了有默认的就可以少一个输入 def calu1(a, b ,*c): #多输入的参数会变成列表 """Calculate numbers and make a jugement.""" d = a + b + c[0] #只使用列表第一个 if d <20: return d else: return "It's too large" print(calu1(5, 6, 1, 9)) #这个结果就证明了有默认的就可以少一个输入 def calu1(a, b ,**c): #输入的参数会变成字典 """Calculate numbers and make a jugement.""" d = a + b #只使用列表第一个 if d <20: return d else: return c print(calu1(b=5, a=21, dic1= "aa")) #字典输入的结果形式一定要是这样的 #另外,直接使用a,b直接赋值就可以不用顺序,但是如果出现了一个定义参数,剩下的尽量全部都要直接赋值,不然由于位置参数和顺序参数混杂容易出现问题 #关键参数不能在位置参数之前
非固定参数
若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数
*args 会把多传入的参数变成一个元组形式
def
stu_register(name,age,
*
args):
# *args 会把多传入的参数变成一个元组形式
print
(name,age,args)
stu_register(
"Alex"
,
22
)
#输出
#Alex 22 () #后面这个()就是args,只是因为没传值,所以为空
stu_register(
"Jack"
,
32
,
"CN"
,
"Python"
)
#输出
# Jack 32 ('CN', 'Python')
还可以有一个**kwargs会把多传入的参数变成一个dict形式。
当然这个与输入有关;
def
stu_register(name,age,
*
args,
*
*
kwargs):
# *kwargs 会把多传入的参数变成一个dict形式
print
(name,age,args,kwargs)
stu_register(
"Alex"
,
22
)
#输出
#Alex 22 () {}#后面这个{}就是kwargs,只是因为没传值,所以为空
stu_register(
"Jack"
,
32
,
"CN"
,
"Python"
,sex
=
"Male"
,province
=
"ShanDong"
)
#输出
# Jack 32 ('CN', 'Python') {'province': 'ShanDong', 'sex': 'Male'}
非固定参数
若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数
1
2
3
4
5
6
7
8
9
10
|
def stu_register(name,age, * args): # *args 会把多传入的参数变成一个元组形式 print (name,age,args) stu_register( "Alex" , 22 ) #输出 #Alex 22 () #后面这个()就是args,只是因为没传值,所以为空 stu_register( "Jack" , 32 , "CN" , "Python" ) #输出 # Jack 32 ('CN', 'Python') |
还可以有一个**kwargs
1
2
3
4
5
6
7
8
9
10
|
def stu_register(name,age, * args, * * kwargs): # *kwargs 会把多传入的参数变成一个dict形式 print (name,age,args,kwargs) stu_register( "Alex" , 22 ) #输出 #Alex 22 () {}#后面这个{}就是kwargs,只是因为没传值,所以为空 stu_register( "Jack" , 32 , "CN" , "Python" ,sex = "Male" ,province = "ShanDong" ) #输出 # Jack 32 ('CN', 'Python') {'province': 'ShanDong', 'sex': 'Male'} |