数学函数

 

函数

返回值 ( 描述 )

abs(x)

返回数字的绝对值,如abs(-10) 返回 10

ceil(x)

返回数字的上入整数,如math.ceil(4.1) 返回 5

cmp(x, y)

如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1

exp(x)

返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045

fabs(x)

返回数字的绝对值,如math.fabs(-10) 返回10.0

floor(x)

返回数字的下舍整数,如math.floor(4.9)返回 4

log(x)

如math.log(math.e)返回1.0,math.log(100,10)返回2.0

log10(x)

返回以10为基数的x的对数,如math.log10(100)返回 2.0

max(x1, x2,...)

返回给定参数的最大值,参数可以为序列。

min(x1, x2,...)

返回给定参数的最小值,参数可以为序列。

modf(x)

返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。

pow(x, y)

x**y 运算后的值。

round(x [,n])

返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。

sqrt(x)

返回数字x的平方根

 

定义一个函数

你可以定义一个由自己想要功能的函数,以下是简单的规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。(也相当于过程)  #过程:就是没有返回值的函数

匿名函数

python 使用 lambda 来创建匿名函数。

lambda只是一个表达式,函数体比def简单很多。

lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。

虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

# def test(x,y,z):#x=1,y=2,z=3
#     print(x)
#     print(y)
#     print(z)

#位置参数,必须一一对应,缺一不行多一也不行
# test(1,2,3)

#关键字参数,无须一一对应,缺一不行多一也不行
# test(y=1,x=3,z=4)

#位置参数必须在关键字参数左边
# test(1,y=2,3)#报错
# test(1,3,y=2)#报错
# test(1,3,z=2)
# test(1,3,z=2,y=4)#报错
# test(z=2,1,3)#报错

 

# def handle(x,type='mysql'):
#     print(x)
#     print(type)
# handle('hello')
# # hello 
# # mysql
# 
# handle('hello',type='sqlite')
# # hello
# # sqlite
# 
# handle('hello','sqlite')
# # hello
# # sqlite

 

#参数组:**字典 *列表
def test(x,*args):
    print(x)
    print(args)


# test(1)
# # 1
# # ()
#
# test(1,2,3,4,5)
# # 1
# # (2, 3, 4, 5)
#
# test(1,{'name':'alex'})
# # 1
# # ({'name': 'alex'},)
#
# test(1,['x','y','z'])
# # 1
# # (['x', 'y', 'z'],)
#
# test(1,*['x','y','z'])
# # 1
# # ('x', 'y', 'z')
#
# test(1,*('x','y','z'))
# # 1
# # ('x', 'y', 'z')

# def test(x,**kwargs):
#     print(x)
#     print(kwargs)
# test(1,y=2,z=3)
# # 1
# # {'y': 2, 'z': 3}
#
# test(1,1,2,2,2,2,2,y=2,z=3)#报错
# test(1,y=2,z=3,z=3)#会报错 :一个参数不能传两个值

# def test(x,*args,**kwargs):
#     print(x)
#     print(args,args[-1])
#     print(kwargs,kwargs.get('y'))
# # test(1,1,2,1,1,11,1,x=1,y=2,z=3) #报错
# 
# test(1,*[1,2,3],**{'y':1})
# # 1
# # (1, 2, 3) 3
# # {'y': 1} 1

 

高阶函数: 1.函数接收的参数是一个函数名;   2.返回值中包含函数


# 把函数当作参数传给另外一个函数
# def foo(n): #n=bar
#     print(n)
#
# def bar(name):
#     print('my name is %s' %name)
#
# # foo(bar)
# # foo(bar())
# foo(bar('alex'))

#返回值中包含函数
def bar():
    print('from bar')
def foo():
    print('from foo')
    return bar
n=foo()
n()
def hanle():
    print('from handle')
    return hanle
h=hanle()
h()



def test1():
    print('from test1')
def test2():
    print('from handle')
    return test1()

 



posted on 2019-01-20 17:54  -豪-  阅读(170)  评论(0)    收藏  举报