zoukankan      html  css  js  c++  java
  • python--函数

    函数的定义

    def sendmail():      #####定义函数,sendmail 是由自己定义的
    n = 100
    n +=1
    print(n)

    sendmail() ######执行函数 结果为 101
    f = sendmail ##将函数名赋值给f
    f() ######执行函数 结果为101

    下面是一个正式的函数线上能发送成功,知识生产环境需要考虑到网络发送邮件,受到网络、第三方服务器(网易的邮箱)的限制比较多
    原理实现:
    首先定义一个值 ret
    执行try 里面的内容,成功的话,下面内容就不执行,从而返回的ret值是开始赋的True
    执行try 里面的内容,不成功的话,就执行下面的内容,从而返回的ret值是开始赋的True
    '''
    '''
    import smtplib
    from email.mime.text import MIMEText
    from email.utils import formataddr
    def sendmail():
    ret = True
    try:
    msg = MIMEText('邮件内容--这是我用写程序的方式发送的邮件','plain','utf-8')
    msg['From'] = formataddr(['wangshiqing','wsqnihao@126.com'])
    #msg['To'] = formataddr(['wangqq','958831291@qq.com'])
    msg['To'] = formataddr(['jingjing','2457272017@qq.com'])
    msg['Subject'] = "主题--python程序测试"

    server = smtplib.SMTP("smtp.126.com",25)
    server.login("wsqnihao@126.com","Wang1@3_4")
    #server.sendmail('wsqnihao@126.com',['958831291@qq.com',],msg.as_string())
    server.sendmail('wsqnihao@126.com',['2457272017@qq.com',],msg.as_string())
    server.quit()
    except Exception:
    ret = False
    return ret

    ret = sendmail()
    if ret:
    print("发送成功")
    else:
    print("发送失败")


    # msg['To'] = formataddr(['jingjing','2457272017@qq.com'])

    # server.sendmail('wsqnihao@126.com',['2457272017@qq.com',],msg.as_string())
    '''
    '''
    def show():
    print('a')
    if 1 ==2:
    return [11,22,33]
    print('b')

    ret = show()
    print(ret)
    '''
    '''
    结果是
    a
    b
    None
    重点是没有执行return 语句,默认会返回None
    '''
    '''
    def show():
    print('a')
    if 1 == 1:
    return [11,22,33]
    print('b')

    ret = show()
    print(ret)
    '''
    '''
    结果是
    a
    [11, 22, 33]
    解释是:执行了if语句后,执行return 得到[11,22,33] 程序也中断了
    '''
    '''
    #######程序的debug模式###
    在语句的左边的灰色的位置用鼠标点,会出现红色的点,这就是程序的断点
    在正常执行的按钮右边有一个debug模式的运行键。执行后,程序会正常进行,
    在正常执行的反馈界面中,有一个按钮,按一下,程序会往下走一步,就会看到程序的运行调试过程。
    '''

    '''
    ######形式参数
    import smtplib
    from email.mime.text import MIMEText
    from email.utils import formataddr
    def sendmail(user):
    ret = True
    try:
    msg = MIMEText('邮件内容--这是我用写程序的方式发送的邮件','plain','utf-8')
    msg['From'] = formataddr(['wangshiqing','wsqnihao@126.com'])
    msg['To'] = formataddr(['wangqq','958831291@qq.com'])
    msg['Subject'] = "主题--python程序测试"

    server = smtplib.SMTP("smtp.126.com",25)
    server.login("wsqnihao@126.com","Wang1@3_4")
    server.sendmail('wsqnihao@126.com',[user,],msg.as_string())
    server.quit()
    except Exception:
    ret = False
    return ret

    ret = sendmail('958831291@qq.com')
    if ret:
    print("发送成功")
    else:
    print("发送失败")
    '''
    '''
    #####一个参数
    def show(a1):
    print(a1)
    ret = show(100)
    print(ret) ###结果是 100
    #### None
    '''
    '''
    ######二个参数
    def show(a1,a2):
    print(a1,a2)
    ret = show(123,999)
    print(ret)
    ###结果是
    #123 999
    #None
    '''
    '''
    ########默认参数
    def show(a1,a2=999):
    print(a1,a2)
    ret = show(123)
    print(ret)
    ###结果是
    #123 999
    #None
    #####默认参数1:只能放在最后,2 如果赋值的话,是以新赋的值为标准
    '''
    '''
    #####指定参数
    def show(a1,a2):
    print(a1,a2)
    ret = show(a2=999,a1=123)
    print(ret)
    '''
    '''
    ########动态参数
    #def show(*args):
    # print(args,type(args))
    #ret = show(11,22,33,44,55)
    #print(ret)

    #def show(**args):
    # print(args,type(args))
    #ret = show(n1='ere',n2='sffds',n3=100)
    #print(ret)

    def show(*args,**kwargs):
    print(args,type(args))
    print(kwargs,type(kwargs))

    ret = show(11,22,'sdfs',33,n1='ere',n2='sffds',n3=100)
    print(ret)
    '''
    '''
    (11, 22, 'sdfs', 33) <class 'tuple'>
    {'n1': 'ere', 'n2': 'sffds', 'n3': 100} <class 'dict'>
    None
    1 * 传入的参数之后,得到的是一个元组
    2,** 传入参数后,得到的是字典,也就是说,传入的参数的形式是 ####=###
    3 两种形式混合的话,* 写在前面 ** 写在后面 传入参数的时候 11,22 这种形式的也是必须写在前面
    '''

    '''
    def show(*args,**kwargs):
    print(args,type(args))
    print(kwargs,type(kwargs))

    l = [11,22,33,44]
    d = {'n1':'abc','alex':'ef'}
    #ret = show(l,d)
    #print(ret)
    ret = show(*l,**d)
    print(ret)

    print(show(l,d))的执行结果如下,是由于l,d 符合*args的情况,元组中可以包含列表和字典
    ([11, 22, 33, 44], {'alex': 'ef', 'n1': 'abc'}) <class 'tuple'>
    {} <class 'dict'>
    None

    print(show(*l,**d))的执行结果如下,是明确告诉程序,自己的需求
    (11, 22, 33, 44) <class 'tuple'>
    {'n1': 'abc', 'alex': 'ef'} <class 'dict'>
    None

    '''



    '''
    s1 = "{0} is {1}"
    #ret = s1.format('alex','2b')
    #print(ret)

    l = ['alex','2b']
    ret = s1.format(*l)
    print(ret)

    s1 = "{name} is {acter}"
    #ret = s1.format(name = 'alex',acter = '2b')
    #print(ret)

    d = {'name':'alex','acter':'2b'}
    ret = s1.format(**d)
    print(ret)
    '''



    '''
    上面的内容实现“函数的动态参数实现字符串格式化”
    结果都是alex is 2b
    '''

    ####lambda 表达式 简单函数的表示方式
    ##创建了形式参数a
    ###有了函数内容,a+1 并把结果return
    #def func(a):
    # b = a +1
    # return b
    #ret = func(4)
    #print(ret)

    func = lambda a:a+1
    ret = func(4)
    print(ret)

    ########上面5行,和下面三行 表达的意思是一样的。


    #########内置函数#########
    ###内置函数有哪些
    '''
    abs() 绝对值
    all() 判断序列(列表、元组、字典)中元素是否全部为真
    假的 None 空字符串、空元组、空字典、空元组
    any() 判断只要一个元素为真,返回值就是真的
    bool(None) #判断元素的布尔值

    ascii() ascii 码
    bin() 二进制
    bytearray() 转换为字节数组
    >>> bytearray("fsdfsfsdfds",encoding='utf-8')
    bytearray(b'fsdfsfsdfds')

    callable() 是否可执行
    >>> f = lambda x: x+1
    >>> callable(f)
    True
    >>> f(6)
    7

    chr() 数字转为ascii
    ord() ascii 转为数字
    一般应用场景,生成验证码
    >>> import random
    >>> random.randint(1,99)
    75
    >>> random.randint(1,99)
    68
    >>> random.randint(1,99)
    37
    >>> chr(78)
    'N'

    compile() 编译
    delattr() 发射
    dict() 字典
    dir() 所有变量所有key
    divmod()
    enumerate()
    >>> li = ['alex','yy','zz']
    >>> for i in li:print(i)
    ...
    alex
    yy
    zz
    >>> for i,item in enumerate(li,1):print(i,item)
    ...
    1 alex
    2 yy
    3 zz
    ###enumerate 从1 开始自增加

    eval()
    filter() 通过map() 函数处理得到原来列表符合要求的值的一个新列表
    map() 通过map() 函数处理得到原来列表所有值的一个新列表
    11:34
    >>> li = [11,22,33,44]
    >>> map(lambda x:x+100,li)
    <map object at 0x0050B990>
    >>> new_li = map(lambda x:x+100,li)
    >>> for i in new_li:print(i)
    ...
    111
    122
    133
    144

    >>> li = [11,22,33,44]
    >>> def foo(a):
    ... if a>33:
    ... return True
    ... else:
    ... return False
    ...
    >>> new_li2 = filter(foo,li)
    >>> list(new_li2)
    [44]


    float()
    format()

    getattr()

    frozenset() 冻结set
    set()

    globals() 当前全局变量
    locals() 局部变量

    hash()

    help()
    hex() 十六进制 0x 表示
    oct() 八进制 0o表示

    max()
    min()
    sum()

    pow
    range() 区间 17:40
    >>> i = range(1,10)
    >>> for a in i:print(a)
    ...
    1
    2
    3
    4
    5
    6
    7
    8
    9


    reversed()反转
    round() 四舍五入

    slice() 切片
    sorted() 排序
    str() 字符串



    super()
    vars() dir 所有的key

    zip() ###混合,得到一个列表
    >>> x = [1,2,3]
    >>> y = [4,5,6]
    >>> zipped = zip(x,y)
    >>> list(zipped)
    [(1, 4), (2, 5), (3, 6)]

    '''


    ###########open 函数
    #f = open("test.log",'w','encoding=utf-8')
    ##f.write('abcdefg')
    #f.close()
    #print(f)


    f = open('test.log','w')
    f.write('abcdefg')
    f.close()
    print(f)
  • 相关阅读:
    mongodb的CRUD操作三
    mongodb的CRUD操作二查询
    mongodb的CRUD操作一
    python 全栈Day01 安装python
    sqlalchemy 无法显示中文的问题
    2017python学习的第九天,进程,线程协程
    2017python学习的第八天,socket的使用
    2017python学习的第七天,面向对象编程
    2017python学习的第六天,面向对象
    创建证书
  • 原文地址:https://www.cnblogs.com/qing-add/p/5385151.html
Copyright © 2011-2022 走看看