zoukankan      html  css  js  c++  java
  • 函数部分小知识点

    1.变量的解压

    当函数的返回值是多个而又想直接取到每一个时,可以用变量的解压 ,例如:

    a,b,c,d,e = "hello"
    print(a)  ---->"h"
    print(b)  ---->"e"
    print(c)  ---->"l"
    print(d)  ---->"l"
    print(e)  ---->"o"


    只想取首尾时中间的可以用下划线“_”来表示,来占一位
    a,_,_,_,e = "hello"
    print(a)  ---->"h"
    print(e)  ---->"o"


    中间的多个下划线可以用*_”来表示
    a,*_,e = "hello"

    也可以用head,tail表示头尾
    head,*_ = "hello"
    print(head) = "h"

    *_,tail = "hello"
    print(tail) = "o"

    变量的解压,此处的变量可以使任何type的序列就可以
    *_ = [1,2,3]
    *_ = {"a":"你好"}


    变量的解压在函数中的应用

    def bar(x.y):
     return 1,2,3
    res = bar(x,y)
    print(res)   ----> (1,2,3)

    想一次得到每一个结果:

    def bar(x.y):
     return 1,2,3
    a,b,c = bar(x,y)
    print(a)   ----> 1
    print(b)   ----> 2
    print(c)   ----> 3

    2.定义函数后如何获取函数名和函数体中的帮助信息

    def timmer():

      "你好"

      print(1,2,3)

    a = timmer.__name__ 

    print(a)        ----> "timmer"

    print(type(a))       ----> class  "str"

    b = timmer.__doc__ 

    print(b)        ----> "你好"

    3.捕捉异常

    d = {"a":1, "b":2, "c":3}

    i = iter(d)

    while True:

      try:

        print(next(i))

      except StepIteration:

        break

    使用try...except来捕捉异常,发现异常时,执行except作用域的代码

    注:for循环本质上就是一个处理了异常的迭代器,而使用while则要捕捉异常;

    3.关于协程函数中,g.send()与next(g)区别

    (1) 如果函数内yield是表达式形式,必须先next(g),初始化,然后才能g.send(),去传值;

    (2)二者的共同之处是都可以让函数在上一次暂停的位置继续运行,不一样的地方在于send在触发下一次代码的执行时,会顺便给yield传一个值;

    (3)g.send()可以传多个值,但必须是元祖的形式,如g.send(("包子“,”水果“))

    (4)g.send(None)就相当于初始化时的next(g)只触发不传值。

    注:协程函数在使用时第一步是初始化,这个初始化可以用装饰器来完成。

    4.几个表达式

    (1) 列表推导

    [ 表达式  for循环   if 判断]        每一次循环,将以表达式的形式为一个元素,放入列表

    l = ["egg%s" % i  for i  in range(100) if i > 5]

    (2)生成器表达式

    (表达式  for循环(可迭代对象)   if 判断)        每一次循环,将以表达式的形式生成一个结果,存在于这生成器之中,用next()方法查看

    f = open("a.txt)

    g = ( line.strip()  for  line in  f)

    list(g)   因g可迭代,故而可转化为列表

    (3)lambda 匿名函数

    lambda 参数 :  返回值 

    如 lambda k : salaries[k]    结果是salaries[k] 

  • 相关阅读:
    Linux初学
    Linux初学
    EntityFramework IEnumerable,IQueryable ,Include
    EntityFramework 4/5/6 中执行自定义SQL语句
    ServiceStack Web Service 创建与调用简单示列
    ServiceStack 概念
    Couchbase 环境搭建与使用(C#)
    Redis 环境搭建与使用(C#)
    分享几段JavaScript
    Activemq 平台搭建与C#示列
  • 原文地址:https://www.cnblogs.com/weigege2015/p/7707389.html
Copyright © 2011-2022 走看看