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

    内置函数

       python中有很多内置的函数,根据官方文档做一个简单的示例。

      


    abs

      即返回一个数的绝对值,这个数可以是整数也可以是浮点数。

    n = input('输入一个整数:')
    res = abs(int(n)) # 整数
    print(n,'的绝对值为:',res)

      如上所示,我们这样就可以求一个整数的绝对值。 注意,#是注释的标识符,和cfg文件类似。 

    all

      如下,只有当所有的满足条件时,才返回True,否则返回False。 注意:all只接受一个参数,如这里的list。

    res1 = all([5, 6, 8, 10]) #True
    res2 = all([0, 6, 8, 10]) #False
    res3 = all(['hello', 'world', 'wayne']) #True
    res4 = all(['hello', 'world', '']) #False

    any 

      当any接受的参数里只要一个满足,就会返回False。

    res1 = any([5, 0, 8, 10]) #True
    res2 = any([0, 0, 0, 0]) #False
    res3 = any(['hello', 'world', 's']) #True
    res4 = any(['', '', '']) #False

    ascii

      ascii()返回一个字符串,但是对于参数中的非ASCII字符通过repr()函数使用/x,/u或/U编码的字符。

    res1 = ascii('wayne') #'wayne'
    res2 = ascii(65) #'65'
    res3 = ascii('中文') #'u4e2du6587'

      如上所示,如果接受的参数是ascii字符,则直接返回,否则采用其他方式返回字符。

      

    bin

      这个函数可以将一个数转换为二进制数,如下:

    res1 = bin(-96) # -0b1100000
    res2 = bin(65) # 0b1000001
    res3 = bin(8) # 0b1000

    bool

      即接受一个参数,然后返回True或者是False。

    res1 = bool(-96) # True 
    res2 = bool(0) # False
    res3 = bool('wayne') # True 
    res4 = bool('') # False

    help

      这个函数的功能非常强大,接受一个字符串作为参数,可以是函数的名称、关键字等,如下所示:

    >>> help('abs')
    Help on built-in function abs in module builtins:
    
    abs(x, /)
        Return the absolute value of the argument.
    
    >>> help('continue')
    The "continue" statement
    ************************
    
       continue_stmt ::= "continue"
    
    "continue" may only occur syntactically nested in a "for" or "while"
    loop, but not nested in a function or class definition or "finally"
    clause within that loop.  It continues with the next cycle of the
    nearest enclosing loop.
    
    When "continue" passes control out of a "try" statement with a
    "finally" clause, that "finally" clause is executed before really
    starting the next loop cycle.
    
    Related help topics: while, for
    
    >>> help('help')
    Help on _Helper in module _sitebuiltins object:
    
    help = class _Helper(builtins.object)
     |  Define the builtin 'help'.
     |
     |  This is a wrapper around pydoc.help that provides a helpful message
     |  when 'help' is typed at the Python interactive prompt.
     |
     |  Calling help() at the Python prompt starts an interactive help session.
     |  Calling help(thing) prints help for the python object 'thing'.
     |
     |  Methods defined here:
     |
     |  __call__(self, *args, **kwds)
     |      Call self as a function.
     |
     |  __repr__(self)
     |      Return repr(self).
     |
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |
     |  __dict__
     |      dictionary for instance variables (if defined)
     |
     |  __weakref__
     |      list of weak references to the object (if defined)

      如上,如果我们对于某个函数如何使用不了解,就可以使用help函数进行查找。

    input

      这个函数使用频率很高,即接受一个字符串作为参数,提示输入,并含有返回值。

    iter  

      这个函数用来生成迭代器,如下:

    lst = [1, 2, 3]
    for i in iter(lst):
      print(i)

      实际上,对于这里的for循环,直接是for i in lst:也是可以的,那为什么还要使用iter()生成迭代器呢,我们接下来看看next()便知道了。

    next

      next函数的作用就是生成迭代器的下一个元素,如果没有了,则报StopIteration错误,就可以被捕获了。 

    it = iter([1, 2, 3, 4, 5])
    while True:
        try:
          x = next(it)
          print(x)
        except StopIteration:
          break

       

    sum

      这个函数接受一个可迭代的参数,返回他们的和,如下:

    >>> sum([1, 5, 6])
    12
    >>> sum((5, 85, 6))
    96
    >>> sum(iter([5, 63, 0]))
    68

      

    list

      我们知道元组和列表的区别是前者不可改变,而后者可以改变,如果我们希望将元组改为列表,就可以使用list函数,如下:

           

      如上所示,a是列表,所以可修改,而b是元组,不可修改,我们使用list使之成为列表,就可以修改了。

    id

       id可以获取到对象的内存地址,如下:

    >>> a = 'wayne-zhu'
    >>> id(a)
    59391056
    >>> b = 1118
    >>> id(b)
    58188416

    complex

      此函数可以定义成a + bj的复数,接受两个参数,第一个参数为a,第二个参数为b,如果只有一个参数,即b = 0,如下:

    >>> complex(1)
    (1+0j)
    >>> complex(1, 2)
    (1+2j)
    >>> complex(-1, 2)
    (-1+2j)

    函数定义

      在python中,定义一个函数可以使用 def 语句,接着是函数名, 括号、参数、冒号,接着就是函数体、返回值等,并需要注意其中的缩进,如下:

    def abs_self(x):
      if x > 0:
        return x
      else:
        return -x
    
    a = int(input('请输入一个非0的整数:'))
    print(abs_self(a))

      如上所示,我们可以看到使用了def定义了这样的一个函数。 当然,我们也可以定义一个没有返回值的函数,函数会自动返回None。 

      另外,我们还可以使用pass关键词定义一个空函数,如下:

    def kong():
      pass
    
    kong()
    print('over')

      在这个函数中,pass就是函数体,这样至少可以保证函数的格式没有问题,同样也可以用在if等语句中。

      python也可以返回多个值,如下

    import math
    def move(x, y, step, angle):
      nx = x + step * math.cos(angle)
      ny = y + step * math.sin(angle)
      return nx,ny
    x, y = move(100, 100, 50, math.pi/6)
    print(x, y)

      我们首先引入了math模块,这样就能使用math.cos和math.sin这样有用的函数了,然后定义了这样一个move函数,接着使用x,y作为接受结果的变量,结果如下:

    143.30127018922195 125.0

      但python函数真的返回了两个值吗?我们看下面的例子:

    import math
    def move(x, y, step, angle):
      nx = x + step * math.cos(angle)
      ny = y + step * math.sin(angle)
      return nx,ny
    r = move(100, 100, 50, math.pi/6)
    print(r)

      结果如下:

    (143.30127018922195, 125.0)

      可见,这个函数实际上是返回了一个tupple,只是之前的写法更为方便。

      

    函数参数

      在python中,我们可以设置默认参数,它可以降低函数的复杂度,如下所示:

    def enroll(name, sex, age, address):
      print('name:', name)
      print('sex:', sex)
      print('age:', age)
      print('address:', address)
      print('
    ')
    
    enroll('wayne', 'm', 7, 'xinjiang')
    enroll('hedy', 'f', 7, 'xinjiang')
    enroll('baby', 'm', 0, 'xinjiang')
    enroll('mark', 'm', 8, 'japan')

      上面这个函数是在一年级注册学生名单,可以发现,大多数学生的年龄都是7岁,地点都是在xinjiang,因此,如果使用这种方法会造成浪费,而如果使用默认参数呢? 如下:

    def enroll(name, sex, age = 7, address = 'xinjiang'):
      print('name:', name)
      print('sex:', sex)
      print('age:', age)
      print('address:', address)
      print('
    ')
    
    enroll('wayne', 'm')
    enroll('hedy', 'f')
    enroll('baby', 'm', 0, 'xinjiang')
    enroll('mark', 'm', 8, 'japan')

      这样,可以发现,尤其是在条目比较多的时候,函数的调用就会非常简单。 

      注意:默认参数必须是默认的在后面,并且一般把变化少的设置为默认的,变化多的不是默认的。另外,默认参数可以使得程序更为简洁。 

      

      另外,可变参数也是我们常常需要遇到的。 

    def add(numbers):
      sum = 0
      for i in numbers:
        sum += i
      print(sum)
    
    add([1, 2, 3])

      如上所示,我们在调用函数时,参数为一个list,但是这时要多加一个[],比较麻烦,所以我们可以使用可变参数,即在函数参数前添加一个*,如下:

    def add(*numbers):
      sum = 0
      for i in numbers:
        sum += i
      print(sum)
    
    add(1, 2, 3)

      但是,这样的结果是我们如果有一个list,还需要单独的拆开调用,如下:

    def add(*numbers):
      sum = 0
      for i in numbers:
        sum += i
      print(sum)
    
    l = [5, 6, 7]
    add(l[0], l[1], l[2]) #18

      这样又比较麻烦了, 而python允许你这样调用:

    def add(*numbers):
      sum = 0
      for i in numbers:
        sum += i
      print(sum)
    
    l = [5, 6, 7]
    add(*l) #18

     即在调用时在list之前添加*。 

      

      除此之外,关键字参数也是我们常见的。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。如下:

    def person(name, age, **kw):
      print('name', name, 'age', age, 'other', kw)
    
    person('wayne', 22, school='xjtu', home='xj')

      结果如下;

    C:UsersAdministratorDesktop>python foo.py
    name wayne age 22 other {'school': 'xjtu', 'home': 'xj'}

      关键字参数可以扩展函数的功能。比如在用户注册时,name和age是必填项,还有一些选填项,如果用户也填写了,我们通过关键字参数就可以获取到。

      我们还可以使用下面的方式改写:

    def person(name, age, **kw):
      print('name', name, 'age', age, 'other', kw)
    
    extra = {'school': 'xjtu', 'home': 'xj'}
    person('wayne', 22, **extra)

      这种方式得到的结果也是一样的。且推荐这种写法,函数参数定义和调用时一致的,且可扩展性和易读性都不错。

      

       

      

  • 相关阅读:
    SQL Server ->> Natively Compiled Stored Procedures(本地编译存储过程)
    Linux ->> <user_name> not in the sudoers file. This incident will be reported.
    Linux ->> Ping命令
    Linux ->> UBuntu 14.04 LTE下主机名称和IP地址解析
    Linux ->> UBuntu ->> Could not get lock /var/lib/dpkg/lock
    Linux ->> scp命令复制对端机器上的文件/文件夹
    Linux ->> UBuntu 14.04 LTE下安装Hadoop 1.2.1(伪分布模式)
    Linux ->> UBuntu 14.04 LTE下设置静态IP地址
    .Net ->> iTextSharp工具读取PDF文本内容
    oracle case用法
  • 原文地址:https://www.cnblogs.com/zhuzhenwei918/p/8609143.html
Copyright © 2011-2022 走看看