zoukankan      html  css  js  c++  java
  • 5. Python 函数

    函数:(方法、功能)
    作用:1、提高代码的复用性,2、让代码更简洁
    函数命名方法
     
    函数不调用是不会被执行的
     
     
    def calc(a,b): #形参
    #位置参数,必填,否则报错
    res = a * b
    print('%s * %s = %s' %(a,b,res))
    calc(7,8) #实参
     
    def op_file(file_name,conent=None):
    #默认值参数,默认conent=None,非必填,如果未传,则打印None
    # print(file_name)
    # print(conent)
    f = open(file_name,'a+',encoding='utf-8')
    f.seek(0)
    if conent:
    f.write(conent)
    f.flush()
    else:
    print(f.read())
    f.close()
    op_file('a.txt','aaa')
    op_file('a.txt')
     
    #局部变量:只在函数里面使用
    以上代码中,不能将读取的数据取出来。可用return返回出结果。
    def op_file(file_name,conent=None):
    #默认值参数,默认conent=None,非必填,如果未传,则打印None
    # print(file_name)
    # print(conent)
    f = open(file_name,'a+',encoding='utf-8')
    f.seek(0)
    if conent:
    f.write(conent)
    f.flush()
    else:
    all_users = f.read()
    return all_users #调用完函数之后,返回什么结果
    f.close()
    # op_file('a.txt','aaa')
    res = op_file('a.txt') #将返回的函数写到res里面
    print(res)
     
    return的作用
    1、把函数处理的结果返回回来
    2、结束函数,函数里面遇到return,函数会立即结束。
    3、如果return 后面不带参数,则返回None,用于结束函数
    def haha():
    for i in range(5):
    print(i)
    if i == 3:
    return
    res = haha()
    print(res)
     
    没有写return的时候,默认返回None
    def check(pwd):
    #长度6-11
    #包含字母和数字
    import string
    if len(pwd) >5 and len(pwd)<12:
    if set(pwd) & set(string.ascii_letters) and set(pwd ) & set(string.digits):
    print('密码合法')
    else:
    print('密码不合法')
    else:
    print('密码不合法')
    res = check('123') #没有写return的时候,默认返回None
    print(res)
     
    函数之间是可以互相调用的
     
    常量:就是一个不变的值,一般,常量名全是大写字母
     
    全局变量:公共的变量,都可以用的变量
    如果要改全局变量的话,那你要先声明一下(global),修改的是全局变量
    尽量少用全局变量,因为:
    1、不安全,所有人都可以改,多个人写代码时可能互相影响。
    2、全局变量会一直占着内存
     
    函数传参方式,也可以指定形参传值,不用根据形参顺序依次传。
     
    函数不固定参数
    def syz(*args): #参数组,不确定参数数量,args只是一个变量名
    print(args)
    syz() #()
    syz('aaa','bbb','ccc') #('aaa', 'bbb', 'ccc')
    syz('dd') #('dd',)
    syz(123) #(123,)
     
    1、参数非必填
    2、参数数量无限制
    3、把传过来的参数放到元组中
     
    也可以传一个形参,一个不固定参数。
    def syz(a,*args):
    pass
     
    关键字参数
    def syz2(**kwargs):
    print(kwargs)
    syz2() #{}
    syz2(name = 'pzp',age = 38) #{'name': 'pzp', 'age': 38}
    syz2(name = 'pzp',age = 38,addr = '回龙观',home = 'HZ') #{'name': 'pzp', 'age': 38, 'addr': '回龙观', 'home': 'HZ'}
    syz2('nhy') #报错
     
    1、参数非必填
    2、参数数量无限制
    3、把传过来的参数放到字典中,要采用k = v 的格式。
     
    def syz2(time,**kwargs):
    print(kwargs)
    syz2('2018')
    syz2(name = 'pzp',age = 38,time = '2018')
    syz2('2018',name = 'pzp',age = 38,addr = '回龙观',home = 'HZ')
     
    递归调用
    函数自己调用自己,写代码时少用递归,效率没有循环高,而且最多递归999次,999次之后会报错。
    def test1():
    num = int(input('please enter a number:'))
    if num%2 == 0:
    return True #如果是偶数的话,程序就退出了,返回true
    print('不是偶数请重新输入')
    return test1() #如果不是偶数的话继续调用自己,输入值
    print(test1()) #调用test1()
     
    循环999次报错
    i = 0
    def test():
    global i
    i +=1
    print(i)
    test()
    print(test())
    test()
     
    内置函数
    python自带的一些函数,直接拿过来用
    id() #
    type()
    print()
    input()
    list()
    set()
    str()
    dict()
    float()
    print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真
    print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真
    print(bin(10).replace('0b',''))#十进制转二进制,
    print(bool('s'))#把一个对象转换成布尔类型
    print(chr(10))#打印数字对应的ascii
    print(ord('b'))#打印字符串对应的ascii码
    print(dir(1))#打印传入对象的可调用方法
    print(exec('def a():pass'))#执行python代码 ipython Terminal
    exec('def a():print("aaa")')
    a = eval('[1,2,3,4]') #yeshi yonglai zhix python代码的,只能执行简单的代码,比如运算等’
    print(a)
    print(filter(lambda x:x>5,[12,3,12,2,1,2,35]))#把后面的迭代对象根据前面的方法筛选
    print(map(lambda x:x>5,[1,2,3,4,5,6]))
    print(max(111,12))#取最大值
    print(min(111,12))#取最小值
    print(abs(-111))#取绝对值
    print(round(11.11,2))#取几位小数
    print(sorted([2,31,34,6,1,23,4]))#排序
     
     
     
  • 相关阅读:
    HDU 1847
    HDU 1717
    KMP未优化模板、
    Codeforces Round #340 (Div. 2) B. Chocolate
    HDU 1042 N!
    HDU 1018 Big Number
    HDU 1031 Design T-Shirt
    解决Windows 7删除执行过的 EXE、Bat文件有延迟的问题
    修改Android手机的“虚拟机堆大小”和android:largeHeap来防止APP内存溢出问题
    Android引用百度定位API第三方组件后导致其它.so文件无法正常加载的问题
  • 原文地址:https://www.cnblogs.com/pengzhuopeng/p/8893884.html
Copyright © 2011-2022 走看看