zoukankan      html  css  js  c++  java
  • python学习(十三)函数

    使用函数可提高代码的复用性,让代码更简洁,简化代码

    1、函数格式

    def sayhello(): #函数名
        print('hello') #函数体
    sayhello()#调用函数

    注意:如果没有最后一句,调用函数,函数是不会执行的

    2、函数参数

    1)位置参数,必填

    def calc(a,b):  #形参--形式参数
        res=a*b
        print('%s*%s=%s'%(a,b,res))
    calc(7,8)  #实参--实际参数   若不写参数,会报错

    函数定义的参数为形式参数,在调用函数的时候,需要填写实际参数值,若不填写,则会报错

    2)默认参数,非必填

    def op_file(filename,content=None):
        f=open(filename,'a+',encoding='utf-8')
        f.seek(0)
        if content:
            f.write(content)
            f.flush()
        else:
            all_user=f.read()   #all_user是局部变量,出了函数就没有用
        f.close()
    
    op_file('a.txt')

    content参数给了默认为none,所以在调用参数的时候,即使不写该参数的值,仍可以调用成功

    还有一点就是all_user在函数内,属于局部变量,出了这个函数就没有用,比如出了函数想打印all_user的值,会报错

    那么怎么才能将all_user值打印出来呢,就需要将函数中的结果返回回来,并在函数外将函数的返回值赋给其他参数,再打印该参数

    def op_file(filename,content=None):
        f=open(filename,'a+',encoding='utf-8')
        f.seek(0)
        if content:
            f.write(content)
            f.flush()
        else:
            all_user=f.read()
            return all_user #调用完函数后,返回什么结果
        f.close()
    res=op_file('a.txt') #将返回的内容赋给res
    print(res)

    3、return用法:

    return 用来返回结果,不是必须写的,如果在函数中遇到return,则立马结束整个函数

    用法在上面一段代码中可以看见,也可以只写一个return,而没有后面return内容,则返回None

    def h():
        for i in range(5):
            print(i)
            if i==3:
                return#只写一个return的话,就返回None
    res=h()
    print(res)

    4、函数练习1

    检查密码是否合法,长度6-11,有字母和数字

    import string
    def check(pwd):
        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('asd1234')
    print(res)

    5、函数练习2

    判断是否都是小数的函数
    分析:
    小数点个数 .count()
    按照小数点进行分割
    正小数:小数点左边是整数,右边也是整数 isdigits()
    负小数:小数点左边是以负号开头,但是只有一个负号,右边也是整数
    def is_float(s):
        s=str(s)
        if s.count('.')==1:
          s_list=s.split('.')
          left=s_list[0]
          right=s_list[1]
          if left.isdigit() and right.isdigit():
              return True
          elif left.startswith('-') and left.count('-')==1:
            if left.split('-')[1].isdigit() and right.isdigit():
                return True
        else:
            return  False
     
  • 相关阅读:
    Django简介和安装
    CVE-2011-0104:Microsoft Office Excel 中的栈溢出漏洞调试分析
    Struts2漏洞
    JSONP跨域资源共享的安全问题
    如何以最简单的方式安装 KALI 渗透测试框架系统
    CVE-2010-3333:Microsoft RTF 栈溢出漏洞调试分析
    CVE-2010-2883:基于样本分析 PDF SING表字符溢出漏洞
    针对缓冲区保护技术(ASLR)的一次初探
    利用 ROP 技术绕过 DEP 保护的一次简单尝试
    缓冲区溢出之栈溢出利用(手动编写无 payload 的 Exploit)
  • 原文地址:https://www.cnblogs.com/emilyliu/p/8878519.html
Copyright © 2011-2022 走看看