zoukankan      html  css  js  c++  java
  • 函数

    一、为什么要用函数
    1.避免代码重用
    2.提高代码的可读性

    二、函数的定义
    def 函数名(参数1,参数2):
    '''函数注释'''
    print("函数体")
    return "返回值"

    三、函数调用
    返回值 = 函数名(参数1,参数2)

    函数定义——返回值
    关键字:return
    return的作用:
    1.结束函数的执行
    2.返回要返回的值
    返回值的两种情况:
    <1>返回值为None:
    ef mylen():
        """计算s1的长度"""
        s1 = "hello world"
        length = 0
        for i in s1:
            length = length+1
        print(length)
    
    
    str_len = mylen()
    print(str_len)
    不写return
    
    
    def ret():
        print(111)
        return
        print(222)
    
    re = ret()
    print(re)
    只写return
    def ret():
        print(111)
        return None
        print(222)
    
    re = ret()
    print(re)
    return None
        <2>返回值不为None
    1.返会一个值
    def mylen():
        """计算s1的长度"""
        s1 = "hello world"
        length = 0
        for i in s1:
            length = length+1
        return length
    
    str_len = mylen()
    print(str_len)
    返回一个值
            2.返回多个值

    函数调用——接收返回值
    返回值为None 不接收
    返回值不为None
    1.返会一个值
    用一个变量接收
    2.返回多个值
    用一个变量接收,接收的结果是一个元组
    有多少个返回值就用多少个变量接收

    四、参数——站在定义函数的角度上
    1.位置参数
    2.默认参数
    3.动态参数
    *args
    **kwargs
    顺序: 位置参数 *args 默认参数 **kwargs

    (2)参数——站在调用函数的角度上
    1.按照位置传参
    2.按照关键字传参
    3.动态传参 *tup **dic
    (3)参数分为形参和实参
    实参:调用函数的时候传入的参数
    (4)位置参数
    位置参数必须传值
    def aaa(a,b):
        print(a,b)
    aaa(1,2)
    位置参数
    (5)默认参数
    默认参数可以不传值
    def bbb(x=10):
        print(x)
     bbb()     #x = 10
     bbb(20)  #x = 20
    默认参数

    (6)动态参数

    def ccc(*args):#1,2,3,4,5
        print(args)
    
    ccc(1,2,3,4,5)#按位置传参数
    
    t = (1,2,3,4,5)
    ccc(t)  ((1, 2, 3, 4, 5),)
    ccc(*t)  (1, 2, 3, 4, 5)
    动态参数
    def ddd(**kwargs):
        print(kwargs)
    
     ddd(k = 'a',j = 'b')#按关键字传参数
    动态-按关键字传
    def eee(*args,**kwargs):
        print(args,kwargs)
    
     eee(12,123)
    动态-先按位置传参,再按关键字传参

     内置函数

    1、isinstance  判断变量的数据类型

    temp = "asdfsdfs"  
      
    r = isinstance(temp, list)  
      
    print(r)  

    2、lambda用法:

    def f1():  
      
        return 123  
      
    f2 = lambda :123  
      
    r1 = f1()  
      
    r2 = f2()  
      
    print(r1,r2) 
    def f3(a1,a2):  
      
        return a1 + a2  
      
    f4 = lambda a1,a2: a1 + a2  
      
    r3 = f3(1,2)  
      
    r4 = f4(3,4)  
      
    print(r3,r4) 

    3、abs--取绝对值

    i = abs(-123)  
      
    print(123)

    4、divmod  除商得余数---例如分页

    a = 10 / 3  
      
    print(a)  
      
    r = divmod(10,3)  
      
    print(r)  
      
    结果:  
      
    3.33333335  
      
    (3,1)  

    5、eval  -----强制不转换输入类型的格式

    ret = eval("1 + 3")  
      
    print(ret)  
      
    结果:4 

    6、filter (过滤)

    ret = filter(lambda x: x >22, [11,22,33,44])  
      
    for i in ret:  
      
        print(i)

    7、map  无论是map还是filter,得到的结果都是可迭代的对象,迭代器的实例

    def f1(x):  
      
        if x % 2 == 1:  
      
           return x + 100  
      
        else:  
      
           return x  
      
    ret = map(f1, [1,2,3,4,5])  
      
    ret2 = map(lambda x: x + 100if x % 2 == 1 else x ,[1,2,3,4,5])  
      
    print(ret)  
      
    for i in ret :  
      
        print(i)  
    def comp(y):  
      
        c = y > 11  
      
        return c  
      
    ret1 = map(comp, [1,2,4,11,22, 33])  
      
    for i in ret1:  
      
        print(i)  

    8、max()最大数 min()  最小数

    li = [11,22,123,1]  
      
    r = max(li)  
      
    print(r)  
      
    a = min(li)  
      
    print(a) 

    9、pow(x,y) ----就是求x的y次方

    i = pow(2,100)  
      
    print(i) 

    10、zip ---意思就是取两个变量中索引相对应的值

    li1 = [11,22,33,44]  
      
    li2 =["a",'VV',"c","E"]  
      
    r = zip(li1,li2)  
      
    print(r)  
      
    for i in r :  
      
        print(i) 

    11、open---打开,关闭,close

    模式    描述
    r      打开一个文件为只读。文件指针被放置在文件的开头。这是默认模式。
    rb     打开一个文件只能以二进制格式读取。文件指针被放置在文件的开头。这是默认模式。
    r+     打开用于读和写文件。文件指针置于该文件的开头。
    rb+    打开用于读取和写入二进制格式的文件。文件指针置于该文件的开头。
    w      打开一个文件只写。如果文件存在覆盖该文件。如果该文件不存在,则创建写入新文件。
    wb     打开一个文件只能以二进制格式写入。如果文件存在覆盖该文件。如果该文件不存在,则创建写入新文件。
    w+     打开文件为写入和读取模式。如果文件存在覆盖现有文件。如果该文件不存在,创建用于读写操作的新文件。
    wb+    打开用于以二进制格式写入和读出文件。如果文件存在覆盖现有文件。如果该文件不存在,创建用于读写操作的新文件。
    a      打开用于追加的文件。文件指针是在文件是否存在该文件的末尾。也就是说,该文件是在追加模式。如果该文件不存在,它会创建一个用于写入的新文件。
    ab     打开文件用于二进制格式追加。文件指针是在文件是否存在该文件的末尾。也就是说,文件是在追加模式。 如果该文件不存在,它会创建一个用于写入的新文件。
    a+     打开文件为追加和读取方式。文件指针是在文件是否存在该文件的末尾。该文件以追加模式打开。如果该文件不存在,它将创建用于读写操作的新文件。
    ab+    打开一个文件以附加和二进制格式读取模式。如果该文件存在文件指针在该文件的末尾。该文件以追加模式打开。如果该文件不存在,它将创建读写操作的新文件。

    (1)、只读,r
    f = open("路径文件","r")  
      
    f.write("asdfasdf")  
      
    f.close()

    (2)、w只写模式【不可读;文件不存在则创建;存在则清空内容】

    f =open("ha1.log",'a')  
      
    a1 = f.tell()  ---查看指针位置  
      
    print(a1)  
      
    f.write("nini")  ----如果文件存在清空后出现”nini“  
      
       
      
    a = f.tell()----在查看指针  
      
    print(a)  
      
    f.seek(0)  
      
    #c = f.read()  ----不可读  
      
    #print(c)  
      
    f.close()  -----------关闭  
      
    #print(c)  

    (3)、x 不可读,不存在则创建,存在则报错

    f =open("ha3.log",'x')  
      
    a1 = f.tell()  
      
    print(a1)  
      
    f.write("nini")  
      
       
      
    a = f.tell()  
      
    print(a)  
      
    f.seek(0)  
      
    #c = f.read()  ---=不可读  
      
       
      
    #print(c)  
      
    f.close()  

    (4)、a 不可读,不存在则创建,存在则只追加

    f =open("ha3.log",'a')  
      
    a1 = f.tell()  
      
    print(a1)  
      
    f.write("cccc")-----上面已经写入了"nini " ,存在则只追加内容  
      
    a = f.tell()  
      
    print(a)  
      
    f.seek(0)  
      
    #c = f.read()  
      
    #print(c)  
      
    f.close() 
     
     
  • 相关阅读:
    51degress.mobi与wurfl项目的对比
    低版本的51degrees.mobi 1.2.0.5 用UserAgent获取手机硬件型号,并升级最新的WURFL硬件包
    RedGate系列工具,开发必备
    VS中代码显示虚竖线,代码格式标记 Indent Guides
    asp.net下CKFinder IE9以下浏览器中上传图片文件时提示“无效文件名或文件夹名称”的解决方法
    让MySoft.Data也能有Discuz!NT的数据库查询分析工具
    恶意访问网站的策略处理,IP访问限制
    【转载】Asp.Net 全生命周期
    如何在解决方案中新建子网站,Discuz项目子网站技术
    博客园电子期刊2009年8月刊发布啦
  • 原文地址:https://www.cnblogs.com/mengqingjian/p/7240227.html
Copyright © 2011-2022 走看看