zoukankan      html  css  js  c++  java
  • 函数

    函数:提高代码的复用性,让代码更简洁(函数、方法、功能指的都是函数)

    函数名一定要见名知意

    #return

    1

    def say hello():  #定义函数名

              print('hello') #函数体

    函数不调用是不会被执行的

    调用函数

    say hello( ) #调用函数

    实现乘法计算:

    def call(a,b): #形参,形式参数、位置参数、必填参数
    res=a*b
    print('%s*%s=%s'%(a,b,res))
    call(7,8) #实参,实际参数

    局部变量:函数里面定义的变量只能在函数里面用,出了函数就不能用了;return=res #调用完函数之后,返回什么结果

    返回的结果如何获取到:res=op_file('a.txt') #res接受的是函数的返回值 print(res);如果不使用return返回,print(res)=None

    修改文件的函数:

    def op_file(file,connect=None):
        if connect:
            with open(file,'a+',encoding='utf-8') as f:
                f.seek(0)
                f.write(connect)
                f.flush()
        else:
            with open(file,encoding='utf-8') as f:
                res=f.read()
                return res
    res=op_file('a.txt')
    print(res)

    结束函数用法:最终打印出来的结果是:0,1,2,3

    def haha():
        for i in range(5):
            print(i)
            if i==3:
                return
    haha()

    最终结果:500

    money=500
    
    def test(consume):
        return money-consume
    def test1(money):
        return test(money)+money
    money=test1(money)
    print(money)

    常量 :大写字母定义的就是常量,常量就是不会变化的;

    PORT=3306

    FILENAME='user.txt'

    全局变量:公共的变量,都可以用的变量

     想改全局变量,需要先声明 一下,你修改的值是全局变量

    全局变量会一直占着内存,直到程序运行完才释放,所以尽量不用全局变量;

    def sayname():
        global name
        name='刘伟'
        print('name1',name)
        name='李西囊'
        return name
    res=sayname()
    print(res)
    
    结果:
    name1 刘伟
    李西囊

    一种按位置顺序传参,一种按参数名传参,按参数名传参可以不考虑顺序

    def op_mysql(host,port,username,password,db,charset,sql):
        print('连接数据库')
    op_mysql(
        '192.168.1.1',
        3306,'root','123456','jxz','utf-8','select')
    op_mysql(
        '192.168.1.1',
        db='sfsdf',
        charset='sdfsdf',
        sql='select * from user;'
             )

    函数不固定参数

    def syz(*args):#参数组:
               username=args[]
               pwd=args[1]
               age=args[2]
     
    syz()
    syz('niuhanyan','2324')
    syz('is','sdf')

    关键字参数

    def sys2(**kwargs): #关键字参数
               pring(kwargs)
    
    syz2()
    syz2(name='nhy',age=38)
    syz2(name='nhy',age=38,addr='回龙观,home='河南')
    syz2('nhy')
    1、必须指定XX='XXX'
    def syz(a,*args):  #参数组
        print(a)
        username = args[0]
        pwd = args[1]
        age = args[2]
    
    # syz('niuhanyang','2423',2323)
    # syz('1s','sdf')
    def syz2(time,**kwargs):  #关键字参数
        print(kwargs)
    
    syz2('sdf')
    syz2(name='nhy',age=38,time='20180912')
    syz2('2018',name='nhy',age=38,addr='回龙观',home='河南')
    syz2(time='xx',xx='xxx')
    
    #1、必填参数还是非必填的
    #2、它有没有限制参数个数
    #3、它是把传过来的参数放到哪里

    递归

    函数自己调用自己就叫递归,可以实现循环功能,但递归的效率不高,写代码少用递归,递归最大循环次数是999次

    i=0

    def test():

       global i

         i+=1

        print(i)

        test()

    test()

    # def say():
    #     num1=1
    #     num2=2
    #     num3=3
    #     return num1,num2,num3,4
    # res=say()
    # print(res)
    #1、函数如果返回多个值的话,会把值放在元组里面
    #结果:(1, 2, 3, 4)
    
    def say():
        num1=1
        num2=2
        num3=3
        return num1,num2,num3
    res1,res2,res3=say()
    print(res1)
    print(res2)
    print(res3)
    
    #结果:
    1
    2
    3

    字典排序

    d={'a':8,'b':2,'c':3} #字典是无序的,直接对字典排序是不存在的
    res=sorted(d.items(),key=lambda x:x[1])#下标取1是对值进行排序,0是对key进行排序
    print(res)
    for k,v in res:
        print(k,v)

    # #匿名函数,这个函数功能很简单,只用一次
    # res=lambda x:x+1
    # res(1)
    # print(res(1))

    import random

    red_num=random.sample(range(1,34),6)
    new_num=[str(num).zfill(2) for num in red_num] #列表生成式
    l=[i for i in range(1,101,2)]
    print(new_num)

    #内置函数
    #zip
    # l1=['a','b','c','d','e','f','g']
    # l2=[1,2,3,4,5,6,7]
    # print(list(zip(l1,l2)))
    #
    # for a,b in zip(l2,l1):
    #     print(a,b)
    #zip,就是把俩list合并到一起,把两个一维数组变成二维数组
    
        #a 1
        #b 2
        #c 3
    
    #
    # new_lis=[]
    # def my(num):
    #     return str(num)
    # lis=[1,2,3,4,5,6,7,8,9]
    # res=list(map(my,lis))
    # print(res)
    #效果相同,map的功能就是帮你自动循环调用函数
    # for i in lis:
    #     new_lis.append(my(i))
    # print(new_lis)
    
    
    #filter 也是帮你循环调用函数的,过滤
    
    def even(num):
        if num%2==0:
            return True
        return False
    lis=[1,2,3,4,5,6,7,8,9]
    res=filter(even,lis) #filter只保留返回为真的数据
    print('filter..',list(res))
    res2=map(even,lis) #循环调用函数,返回什么,就保存什么
    print('map...',list(res2))
    
    #结果:
    #filter.. [2, 4, 6, 8]
    #map... [False, True, False, True, False, True, False, True, False]
  • 相关阅读:
    java io系列23之 BufferedReader(字符缓冲输入流)
    java io系列22之 FileReader和FileWriter
    java io系列21之 InputStreamReader和OutputStreamWriter
    java io系列20之 PipedReader和PipedWriter
    java io系列19之 CharArrayWriter(字符数组输出流)
    java io系列18之 CharArrayReader(字符数组输入流)
    java io系列17之 System.out.println("hello world")原理
    java io系列16之 PrintStream(打印输出流)详解
    java io系列15之 DataOutputStream(数据输出流)的认知、源码和示例
    java io系列14之 DataInputStream(数据输入流)的认知、源码和示例
  • 原文地址:https://www.cnblogs.com/ruijie/p/10281985.html
Copyright © 2011-2022 走看看