码迷,mamicode.com
首页 > 其他好文 > 详细

函数、内置函数

时间:2017-11-07 14:22:14      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:lib   构造   object   识别   rgs   就是   strong   slice   地址   

一、函数

为什么要用函数呢?使用函数我们可以减少代码中的重复代码,而且便于日后的功能的扩展和维护,也降低了代码之间的耦合性。

那什么是函数呢?函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只要调用其函数名即可。

函数的定义:

def func(): #函数定义规范,这是一个无参数的函数定义
    print("the first function")
func() #函数的调用

 

我们知道了函数的定义之后我们聊聊有参数的函数:

形参:变量只有在被调用的时候才分配内存单元,在调用结束时就会释放所分配的内存单元,因此形参只是在函数的内部有效,函数调用结束返回主函数之后则不能再使用该形参变量。

实参:变量可以是常量、变量、表达式、函数等,无论实参是何种数据类型,在进行函数调用时,它们都必须是确定的值,这样就可以把值传递给形参。

def func(x, y):  #这里定义是x,y都是形参表量
    print(x**y)
x, y = 1, 2
func(x, y) #这里调用函数,x,y都是实参变量,有确定的值

 

接下来聊聊参数的传递,参数有位置参数,关键字参数,非固定参数

def func(x, y):
    print(x**y)
a, b = 1, 2
func(a, b)  #这是位置参数传递,与函数参数的位置一一对应
func(y = a, x = b) #这是关键字参数传递,与函数参数名一一对应,与顺序无关

#运行结果是:
1
2

 

非固定参数在定义的时候并不知道有多少个参数要传递,我们就可以定义非固定参数:有两种一种是返回元组的形式,一种是返回字典的形式,接下来看个列子:

def func(*args): #*args是非固定参数的第一种形式,返回元组,args这个名字可以随便改,但是不推荐改
    print(args)
a, b = 1, 2
func(a, b) #这种形式传递的时候要以位置参数的形式传递
#运行结果是:
(1,2)

 

def func(**kwargs): #**kwargs是非固定参数的另外一种形式,返回字典
    print(kwargs)
func(a = 1, b =2) #参数传递的时候只能用关键字参数的形式传递
#运行结果是:
{a: 1, b: 2}

当参数有位置参数,还有关键字参数的传递时,一定要注意:关键字参数只能放在位置参数后面,并且当形参的某个参数被位置参数匹配了时,关键字参数不能使用别匹配过了的形参名当做关键字的参数名。

当然在函数中一般都会有return返回值,这个的作用就是把函数的运行结果返回回来,还有就是代表函数的结束。

二、内置函数

常用的函数如下:

技术分享

>>> abs(-1) #对传入的参数取绝对值
1
>>> all([1,2,3,4]) #传入一个Iterable对象,若所有值都是非0,返回True,否则False
True
>>> any([0,0,1])#传入一个Iterable对象,若所有值都是0,返回False,否则True
True
>>> ascii(a) #自动执行传入参数的__repr__方法,将对象转为字符串
"‘a‘"
>>> ascii([1,2,3,4])
[1, 2, 3, 4]
>>> bin(3) #将一个十进制的数转换为一个 二进制的数
0b11
>>> oct(10)#将一个十进制的数转换为一个 八进制的数
0o12
>>> hex(17)#将一个十进制的数转换为一个 十六进制的数
0x11
>>> bool(1) #判断传入参数真假
True
>>> bytes(a,encoding = gbk) #将传递参数转为字节类型,第二个参数为编码格式
ba
>>> bytes(你好,encoding = gbk)
b\xc4\xe3\xba\xc3
>>> str([1,2,3,4]) #将传入参数转为字符串
[1, 2, 3, 4]
>>> char(65)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name char is not defined
>>> chr(65) #查看十进制对应的ASCII码值
A
>>> ord(A) #查看ASCII码所对应的十进制数
65
>>> compile("hello",‘‘,exec) #将字符串编译成python能够识别或者可以执行的代码
<code object <module> at 0x000001EA0E813810, file "", line 1>
>>> eval("1+2+3") #把字符串去掉编程可执行的代码,并返回结果
6
>>> exec(compile("print(12)",‘‘,exec))#执行python代码
12
>>> dir(A) #获取传入参数对象的所有方法
>>>help() #获取传入参数(函数)的使用帮助文档
>>> divmod(100,9) #获取商和余数
(11, 1)
>>> enumerate([a,b,c]) #接收序列化数据,返回一个迭代器
<enumerate object at 0x000001EA0EE6E678>
>>> for i, item in enumerate([a,b,c]):
...  print(i,item)
...
0 a
1 b
2 c
>>> isinstance(a,str) #判断第一个参数是否属于第二个参数(数据类型)
True
>>> filter(lambda a:a>3,[2,3,4,5]) #过滤器,第一个参数是一个函数,第二个是一个可迭代对象
<filter object at 0x000001EA0EE38DD8>
>>> list(filter(lambda a:a>3,[2,3,4,5]))
[4, 5]
>>> map(lambda a:a*3,[1,2,3,4]) #第一个参数是函数,第二个是一个可迭代的对象,对可迭代的对象每个元素都执行第一个函数
<map object at 0x000001EA0EE38DD8>
>>> list(map(lambda a:a*3,[1,2,3,4]))
[3, 6, 9, 12]
>>> "you are a good %s"%"boy" #字符串的格式输出
you are a good boy
>>> "you are a good {}, age is {}".format("boy",22) #字符串的格式输出
you are a good boy, age is 22
>>> frozenset([1,2,3]) #将参数转变为不可变集合
frozenset({1, 2, 3})
>>> dict() #创建字典
{}
>>> float(11) #转为浮点数据类型
11.0
>>> print(globals())#获取当前的所有全局变量
{__name__: __main__, __doc__: None, __package__: None, __loader__: <class _frozen_importlib.BuiltinImporter>, __spec__: None, __annotations__: {}, __builtins__: <module builtins (built-in)>, i: 2, item: c}
>>> a = 1
>>> print(id(a)) #获取对象的内存地址
1584488608
>>> int(11.0) #转为整形数据
11
>>> iter() #将可迭代对象转为迭代器
>>> iter([1,2,3])
<list_iterator object at 0x000001EA0EE37518>
>>> len("hello") #获取对象的长度
5
>>>issubclass()  检查一个类是否是另一个类的子类。返回True或False
>>>list()  #列表构造器
>>>locals() #获取局部变量
>>> max([1,2,3,4]) #获取最大值
4
>>> min([1,2,3,4]) #获取最小值
1
>>> open() #用来打开文件
>>> pow(1,3) #幂操作
1
>>> pow(2,3)
8
>>> range(10) #获取一个迭代器,默认从0开始
range(0, 10)
>>> repr([1,4,5,2]) #把传入值转换为字符串
[1, 4, 5, 2]
>>> reversed([12,3,4,5,]) #反转对象
<list_reverseiterator object at 0x000001EA0EE3B898>
>>> list(reversed([12,3,4,5,1]))
[1, 5, 4, 3, 12]
>>> round(3.6) #四舍五入
4
>>> set() #创建集合
set()
>>> slice(1,3,[a,b,c,d]) #切片功能
slice(1, 3, [a, b, c, d])
>>> print(slice(1,3,[a,b,c,d]))
slice(1, 3, [a, b, c, d])
>>> sorted([3,2,1,4])#排序
[1, 2, 3, 4]
>>> sum([1,2,3]) #求和
6
>>> tuple() #创建元组
()
>>> type(b) #判断参数数据类型
<class str>
>>> zip([1,2,3],[a,b,c]) #拉链操作,可用来生成字典
<zip object at 0x000001EA0E714D48>
>>> for (i,x) in zip([1,2,3],[a,b,c]):
...  print(i ,x )
...
1 a
2 b
3 c
>>>rars()  #返回当前模块的所有变量
>>>super() #返回基类
>>>property()#获取对象的所有属性
>>> pow(2,3,3) # 返回 2**3%3 的结果
2
>>>delattr(object,name) #删除对象object的属性name
>>>getattr(object,name) #获取对象object的属性name值
>>>setattr(object,name)#修改或设置object的属性name的值
>>>hasattr(object,name) #判断对象object是否有那么属性

 

函数、内置函数

标签:lib   构造   object   识别   rgs   就是   strong   slice   地址   

原文地址:http://www.cnblogs.com/zsql/p/7798538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!