Python学习-函数的简单使用

# 三种编程的方法论
# 面向对象  :类  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}\n'.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'}
posted @ 2017-11-17 18:14  Ian_learning  阅读(301)  评论(0编辑  收藏  举报