python函数

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。要调用一个函数,需要知道函数的名称和参数。函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”。


因为变量没有类型,所以python中函数是不支持函数重载的(这点与java不同)。

一、自定义一个函数:

1、定义一个函数要使用def关键字开头,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块(一般建议使用四个空格进行缩进)中编写函数体,函数的返回值用return语句返回。如果没有return语句,函数执行完毕后也会默认return(即return None)。

2、函数体的第一行语句可以是可选的字符串文本(建议必填),即这个函数的注释说明

3、返回可以return多个值,那么这个返回值其实是“元组”类型。

4、函数参数:有四类(必选参数、默认参数、可变参数和关键字参数);参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数:

4.1、函数默认参数:(必选参数在前,默认参数必须在后默认参数必须指向不可变对象,因为函数在定义的时候,默认参数对象地址就被分配了,默认参数只要不重新赋值,则指向的地址永远不变,一旦赋值改变,则会发生错误

例:

def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

def add_end(L=None):
    if L is None:
        L = []
    L.append('END')
    return L

4.2、函数可变参数:(可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。

例:

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

4.3、函数关键字参数:(关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个Dictionary

例:

def person(name, age, **kw):
    print 'name:', name, 'age:', age, 'other:', kw
5、在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。


二、函数调用:

例:

>>> int('123')
123
>>> int(12.34)
12
>>> float('12.34')
12.34
>>> str(1.23)
'1.23'
>>> unicode(100)
u'100'
>>> bool(1)
True
>>> bool('')
False


三、常用的内置函数:

1. abs(val)  获取val绝对值。

>>>  abs ( - 10 )
10

2. all(val)  val对象的迭代器中所有元素为真(不为0、不为''、不为False),则返回True(val对象中没有元素也是返回true),否则返回False。(类似于 与逻辑)

>>> tmp_1  =  [ 'python' , 123 ]
>>>  all (tmp_1)
True

3、any(val)  val对象的迭代器里有一个元素为真不为0、不为''、不为False,那么就返回True,否则返回False。(类似于 或逻辑)

4、ascii(val)  调用对象的__repr__()方法,返回一个表示对象的字符串, 但是对于字符串中的非 ASCII 字符则返回通过 repr() 函数使用 \x, \u 或 \U 编码的字符。 

5、bin(val)、oct(val),、hex(val)    三个函数功能分别为:将十进制数分别转换为2/8/16进制。

6、bool(val)  测试一个对象是True还是False.(当对数字使用bool函数时,0返回假(False),任何其他值都返回真。当对字符串使用bool函数时,对于没有值的字符串(也就是None或者空字符串)返回False,否则返回True。bool函数对于空的列表,字典和元祖返回False,否则返回True。)

7、bytes(val, encoding='utf-8')  将一个字符串转换成字节类型

8、str(val, encoding='utf-8')  将字节类型/数值类型等转换为字符串类型

9、chr(val)   用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。(val可以是10进制也可以是16进制的形式的数字。

      unichr(val)和chr(val)函数功能基本一样, 只不过是返回unicode的字符

       ord( val) 函数是 unichr( val )和chr( val ) 函数的相反函数,以一个字符作为参数,返回对应的 ASCII 十进制数数值,或者 Unicode 十进制数数值。

10、@classmethod 类中方法修饰符,指定一个方法为类的方法,由类直接调用执行,只有一个cls参数,调用该的方法时,自动将调用该方法的类赋值给cls,不需要自己传参.

11、compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)   将source编译为代码或者AST对象。得到的对象能过通过exec语句来执行或者eval()进行求值。

参数source -- 字符串或者AST(Abstract Syntax Trees)对象。
参数filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
参数model:指定编译代码的种类。可以指定 'exec' 'eval' 'single'
参数flags :变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
参数flag和dont_inherit:这两个参数为可选参数。

12、 complex(realValimagVal)    创建一个值为realVal + imagVal* j的复数。如果第一个参数是字符串,则不需要指定第二个参数。

参数realVal int long float 或字符串。
参数imagVal int long float

13、delattr(object, name)  相等于 del object.name,用于删除object对象的name属性。

14、dict() / dict(val)  创建数据字典

>>> a  =  dict ()  空字典
>>> a
{}
>>> b  =  dict (one  =  1 , two  = 2 )
>>> b
{ 'one' 1 'two' 2 }
>>> c  =  dict ({ 'one' : 1  , 'two' : 2 })
>>> c
{ 'one' 1 'two' 2 }

15、dir() / dir(val)   不带参数时返回当前范围内的变量,方法和定义的类型列表,带参数时返回参数的属性,方法列表。

16、divmod(val1,val2) 分别获取val1除以val2的商和余数

>>>  divmod ( 20 , 6 )
( 3 2 )

17、eval(val) 将字符串val当成有效的算数表达式来求值并返回计算结果

18、exec(val)  执行字符串val

19、float(val)  将一个字符串或整数转换为浮点数

20、frozenset([iterable]) 创建一个不可修改的set集合。(参数iterable:可迭代对象

21、getattr(object, name [, defalut])  获取对象object名为name的特性,如果object不包含名为name的特性,且提供default参数,将返回default。

22、 id(val)  返回对象的内存地址

23、input()  获取用户输入内容

num  =  input ( "请输入:\n" )
# 用户输入3
print (num)
# 输出结果
3
24、 isinstance(obj, cls))  检查obj对象是否是cls类的对象,返回True或False

25、issubclass(subCls,superCls)  检查一个类是否是另一个类的子类。返回True或False

26、int([val[,radix]]) 将一个字符串或数值转换为一个普通整数

参数val是一个字符串类型时,可以使用参数radix,radix表示val的进制数(默认是10进制)

27、len(val)  返回对象长度

28、list([iterable]) 列表构造函数,参数iterable是可选的。

29、object()  获取一个新的,无特性对象。Object是所有类的基类。它提供的方法在所有的类型实例中共享。

30、open(filename [, mode [, bufsize]]) 打开一个文件,返回一个file对象。(应该使用open()来代替直接使用file类型的构造函数打开文件

参数filename表示将要被打开的文件的路径字符串;
参数mode表示打开的模式,最常用的模式有: 'r' 表示读文本, 'w' 表示写文本文件, 'a' 表示在文件中追加。
Mode的默认值是 'r' 当操作的是二进制文件时,只要在模式值上添加 'b' 。这样提高了程序的可移植性。
可选参数bufsize定义了文件缓冲区的大小。 0 表示不缓冲; 1 表示 行缓冲 ;任何其他正数表示使用该大小的缓冲区;
如果参数值被省却或者为负数则表示使用系统默认缓冲区大小,对于tty设备它往往是行缓冲,而对于其他设备往往完全缓冲。

31、pow(val1,val2)  幂函数

=  pow ( 2 10 )   # 2的10次方
print (r)
              
# 输出
1024

32、print(val)  输出函数

如何取消print的默认换行:print(value, ...,sep='',end='\n',file=sys.stdout,flush=False),将end设为''

33、range(start, stop[, step]) 创建一个整数列表

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);

stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5

step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

34、round(x [, n]) 四舍五入

对参数x的第n+1位小数进行四舍五入,返回一个小数位数为n的浮点数。

35、setattr()  与getattr()相对应,setattr(object,name,value) 参数是一个对象,一个对象属性名称和一个任意值。字符串可以命名现有属性或新属性。如果对象允许,该函数将赋值给该属性。

36、super()  返回父类对象













  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值