函数


#变量时,如果是大写的那这个变量就是一个常量#可以把文件名及路径定义一个变量
# #-------------------------------函数-------------------------------
def my():
    #pass#函数内容是函数体
    #name='python'#函数内的变量是局部变量
    return name
# #-----------------默认函数-------------------------
def sjk(ip,port=3306):#函数形参里可以设置默认的,如def sjk(ip,port=3306),如果实参里有值优先用实参里的值
    print(ip,port)
#sjk('110.1.1.1',8888)
res=sjk('110.1.1.1',8888)
print(res)

# #---------return有两个作用,一个是结束函数,一个是返回结果,如果函数里遇到return立即结束和beark一样------------
def my2():
    for i in range(50):
        return i #如果函数里遇到return立即结束,return下面有再多的也不会运行。
print(my2())
res=my2()
print(res)
# #-------------return其他用法--------------------
def my3():
    a=1
    b=2
    c=3
    return a,b,c
b,c,d=my3()
s=my3()
print(b,c,d)#如果函数定义了多个变量,那输出的就是元素,可以定义多个变量,比如a,b=1,2 这样定义的就是a=1 b=2 是一样的
print(s)#如果函数定义了一个变量,那输出的是一个元组
# #---------------------------------------------
def my4 (s:str,d:dict):#这种形式不是必须的,只是提示型,实际不穿这种类型也不会报错。比如s=123 d='abddd'
    print(s)
    print(c)
my4(123,'abc')


# #----------如果为空就写入-------------
def opdd(file,dic=None):
    if dic:
        with open(r'D:\users.txt',encoding='utf-8') as fw:
            json.dump(dic,fw)
    else:
        f=open(r'D:\users.txt',encoding='utf-8')
        cont=f.read()
        if cont:
            res = json.loads(cont)
        else:
            res={}
        f.close()
        return res

#-------------------------全局变量--------------------
name='wangwang'#全局变量,全局变量定义到函数的上面,这才是全局变量,所有函数都可以用。局部变量只能函数使用。
names=[]
def get_name():
    global name#global,可以局部变量进行说明,变为全局变量,可供其他函数调取,只有str int 和元组才要声明。list和字典不需要声明,都可以供其他函数使用。
    name='haigonggong'#局部变量。如果有局部变量,只会取局部变量,当没有局部变量的时候才会去全局变量,
    names.append('abc')#list和字典不需要声明,都可以供其他函数使用。
    print('函数里面的name',name)
def get_name2():
    print('函数外面的name',name)#输出wangwang。因为函数调取顺序先读的 get-name2
get_name2()
get_name()
print(name)
print(names)


#----------递归函数------------
#递归最多递归999次,递归就是自己调用自己,与循环一样的效果。
count=0
def say():
    global count
    count+=1
    print('say')
    print(count)
    say()
say()

#---------递归演示-----------
def test1():
    num = int(input('please enter a number:'))
    if num%2==0:#判断输入的数字是不是偶数
       return True #如果是偶数的话,程序就退出了,返回true
    print('不是偶数请重新输入!')
    return test1()#如果不是偶数的话继续调用自己,输入值
print(test1())#调用test

#----递归演示-------------
def sjk1(ip,user,db,password):
    print(ip)
    print(user)
    print(db)
    print(password)
sjk1(ip='123.123',user='nini',db='nihoa',password='abc123')
sjk1('123.123','nini',db='nihoa',password='abc123')#可以不加变量名称,一一对应的,但是要按照顺序,也可以混搭带有变量名的
#---------------可变参数--------------
def my(name,sex=''): #name位置参数,是必填的。    #sex 是默认参数
def d_sms(*num):#1个*是可变参数,把元素放到元组里
    #可变参数,参数组
    #1。不是必传的,2.他传入的元素全部放到元组里,3.不限制参数个数,4.用在参数比较多的情况下。一般用(*args)
    print(num)
d_sms(1)
d_sms()
d_sms(6,3,4,5,6,7)
#-----------关键字参数---------------
def d_sms2(**num1):#2个*是关键字参数,把元素放到字典里
    # 可变参数,参数组
    # 1不是必传的,2.他传入的元素全部放到字典里,3.不限制参数个数,4.用在参数比较多的情况下。一般用(**kwargs)
    print(num1)
d_sms2()
d_sms2(abc='ddd')
d_sms2(aaa='bbb',ccc='ddd')
#_------------函数不常用方法--------
def my(name,cy='china',*args,**kwargs):
    #1、位置参数,2.默认值参数,3,可变参数,4.关键字参数
    print(name)
    print(cy)
    print(args)
    print(kwargs)
my('小刚','北京','南京','aaaaaa',ccc='你你你',bbb='嘎嘎嘎')

 

#函数,方法,实现特定功能的一坨代码
#提高代码的复用性
guan()#函数名+()才能调用
import json
with open('a.txt') as f:
    res = json.load(f)
with open('b.txt') as f:
    res = json.load(f)
with open('c.txt') as f:
    res = json.load(f)
#调用函数
# def my():
#     print('函数')
# my()
import json
# def my(:
#     print('函数')
#函数里面定义的变量,就是局部变量,局部变量只能在函数里面使用
#一旦出了函数外面之后,就不能使用了
def get_f(file_name):#形参
    #入参:传入一个文件名
    #出参:转成内容转成字典返回。
    with  open(file_name,encoding='utf-8') as f:#文件名定义#wiht。as自动判断什么时候关闭文件,不用在写close了
        res= json.load(f)#函数里面定义的变量,就是局部变量,局部变量只能在函数里面使用
        return res #增加return返回值之后外部就可以使用了#,处理后拿到返回值。return
#一个函数只做一件事。
abc=get_f(r'D:\users.json')#实参
    # print(abc)
#函数里可以有多个参数,函数里面可以其它函数,如果有需要调用用函数返回值的时候才用return
def xie(name,cont):#函数存在多个参数
    with open(name,'w',encoding='utf-8') as fa:
        json.dump(cont,fa,ensure_ascii=False,indent=4)
        # fa.write(json.dump(cont))
d={'nanme1':'gagaga'}
d2={'nanme2':'gagaga'}
xie(r'D:\users.json',d)
xie(r'D:\users.json',d2)

 

posted @ 2018-09-03 10:36  test祥  阅读(151)  评论(0)    收藏  举报