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]
  • 相关阅读:
    使用 Apache MINA 开发高性能网络应用程序
    工商银行网上支付接口PHP的demo(原创) 发送篇
    netty服务器和跨域访问
    网站集成支付宝接口
    [翻译]C#数据结构与算法 – 第五章栈与队列(Part 2)
    基于ArcGIS10.0和Oracle10g的空间数据管理平台(C#开发)ArcGIS_Engine中的数据访问
    基于ArcGIS10.0和Oracle10g的空间数据管理平台(C#开发)项目中专业名称介绍
    基于ArcGIS10.0和Oracle10g的空间数据管理平台八(C#开发)图层分类标准定义
    基于ArcGIS10.0和Oracle10g的空间数据管理平台(C#开发)背景介绍
    基于ArcGIS10.0和Oracle10g的空间数据管理平台九(C#开发)空间数据导入RDBMS上Shape格式
  • 原文地址:https://www.cnblogs.com/ruijie/p/10281985.html
Copyright © 2011-2022 走看看