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)

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

  

   

  

原文地址:https://www.cnblogs.com/zhuzhenwei918/p/8609143.html