Python--内置属性、函数(常见部分)

内置属性

1、__file__

在pycharm中,__file__会返回当前文件的绝对路径,而在终端直接运行时,则返回的是文件本身(这是个坑。。在IDE开发的时候运行正常,上线就出问题)。

 

pycharm:print(__file__) # F:/test_demo/demo.py

终端: python demo.py    # 会输出 demo.py

所以要使用绝对路径的话,推荐使用 os.path.abspath(__file__),这种写法在终端与pycharm中输出的都是绝对路径

 

2、__name__

表示当前模块的名称,如果为main,表示为顶层模块,能够调用其他非main的模块,并且可运行。如果为非main,则无法运行,只能用来做导入使用(相信大多数同学都试过,在启动项目时,通常只有入口文件可以启动,单独运行项目中其他某个py文件,是无法运行的,而且,在入口文件中,不能存在相对导入包的方式,就是因为该文件为顶层模块,而项目的其他py文件可以存在相对导包的方式)。

还可以用来返回类、实例、函数名等(这个没啥用~,了解即可):

class B:
    pass

print(B.__name__) # B
def a():
    pass

print(a.__name__) # a

 

3、__class__

返回所在的类。

用法:实例或者函数.__class__,

如果是类名.__name__则返回元类 ‘type’(以后会写一篇关于元类的帖)

 

4、__doc__

返回注释信息(注意,必须是三引号的注释,其他类型的注释不会被识别进行返回)

def a(a,b):
    """
    this is a demo test
    :param a:
    :param b:
    :return: 
    """
    c = a + b
    return c

print(a.__doc__)  # 输出如下
# this is a demo test
#     :param a:
#     :param b:
#     :return: 

5、__dict__

以字典形式返回对象的全部属性和方法

class A(object):
    def show(self):
        pass

print(A.__dict__) # {'__module__': '__main__', 'show': <function A.show at 0x0021C6F0>,.....

 

6、__base__

返回父类(没啥可说的)

 

7、__mro__

返回继承顺序:

class B(object):
    pass

class A(B):
    pass

print(A.__mro__) # (<class '__main__.A'>, <class '__main__.B'>, <class 'object'>)。
如果只是单继承,继承层次不深的话很好理解,但其实并不是单纯的从下到上的顺序,感兴趣的同学可以去了解一下,这里就不展开了。

 

8、__metaclass__

元类,以后会单独开一篇。

 

内置函数

先说一下函数与方法的区别(我真是想起什么来说什么- -)。。初学的话,应该都想过函数跟方法有什么区别,毕竟它们的相似度有目共睹。。

直接上代码:

class B(object):
    def demo(self):
        pass
    def second_demo(self):
        pass
def demo():
    pass

def second_demo():
    pass

print(demo) # <function demo at 0x005D6BB8>
print(second_demo) # <function second_demo at 0x006129C0>

print(B.demo) # <function B.demo at 0x0027C6F0>
print(B.second_demo) # <function B.second_demo at 0x00612978>

b = B()
print(b.demo) # <bound method B.demo of <__main__.B object at 0x002BC4D0>>
print(b.second_demo) # <bound method B.second_demo of <__main__.B object at 0x00611290>>

通过上面可以看到,每个普通函数、类方法、实例方法之间的内存地址是各不相同的

其次,在同一个类下的方法是共用一片内存空间(就是这个类的内存空间)。当一个方法修改或产生一个变量后,其他方法也能够使用到这个变量,这个变量不会消失,而函数之间则是完全独立的。

最后注意:只有实例调用的才叫方法!!类名直接调用本身还是进行的函数调用。

 

进入正题。。。

鉴于篇幅太长,有的同学看不下去,此处只举比较简单的函数。有几个比较重要的函数另开篇单独写。

1、zip函数

可将2个可迭代对象同时进行遍历。

lst = [1,2]
lst2 = [3,4]

for item1, item2 in zip(lst, lst2):
    print("item1:{}, item2:{}".format(item1, item2))
    # item1:1, item2:3
    # item1:2, item2:4

注意,(1)zip遍历的次数根据2个可迭代对象中元素较少的选取。也就是说如果lst2=[3],则只循环一次。

(2)2个可迭代对象可以是不同类型,比如同时遍历一个列表与元组

 

2、dict函数

构建字典

 

3、abs函数

返回number 的绝对值

语法:abs(number)

 

4、all函数

判断某个可迭代对象里是否全部为真

语法:all(iteratble)

print(all([1,2,3,4])) # True
print(all([1,2,3,0])) # False

 

5、any函数

iterable里任一元素为真则为True

语法:any(iterable)

 

6、callable函数

判断对象是否为可调用对象,是则返回True,否则返回False。(返回真,可能调用失败,返回假,则肯定调用失败)

 

7、dir函数

返回obj的全部属性和方法,如果对象为实例或类对象,则递归找到基类的属性(类似上面的__dict__)

语法:dir([obj])

 

8、help函数

返回对象的详细信息。非常强大

语法:help(obj)

 

9、pow函数

返回x的y次幂,如果z存在,则对z取余,(比直接 pow(x, y) % z 计算更高效)

语法:pow(x,y[,z])

注意:10**2 = 100 ,10**-2 = 0.01。**是幂运算

 

10、round函数

返回num舍入小数点后n位精度的值

语法:round(num,[,n]),

 

如果本篇文章对你有帮助,可否在文章右侧点个赞再走呢~~

 

本文为原创,转载请注明出处

 

python 如何避免大量的if else​​​​​​​

python魔法方法(部分)

python避坑篇

python complex函数

python开发手册

python内置函数(下)

python内置属性,函数

python异常处理

python lambda函数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值