Python其他

1、关于函数调用

(1)同一文件夹下互相调用:

www文件夹下的A.py和B.py文件,A中有add函数,B想调用A,直接用

from A import add

(2)不同文件夹下互相调用:

A.py中有add函数,B想调用A

  • NNN/www文件夹下的A.py和NNN/hhh文件夹下的B.py
import sys
from sys import path
path.append(0,sys.path[0]+'\\www')
from .www.A import add
  • A.py在文件NNN/www/test1/app文件夹下,B.py在文件NNN/hhh/test2/app文件夹下
import sys
sys.path.inset(0,'/path/to/NNN/www/test1/app')

import A
  • 同(2)一样,但是必须要求被引用的文件夹下有__init__.py文件,如果没有,可以新建一下
from NNN.www.test1.app.A import add
  • 若A.py和B.py在平行路径下,如 A.py在NNN/MMM/www/A.py B.py在NNN/MMM/hhh/B/py
import sys
sys.path.append('../')
  • 此方法适用于python3 on linux------------没试验过
import sys
sys.path.append(pathto(A.py所在的文件夹)ContainingScripts)
from scriptName import add

2、调用函数总结

(1)想查看自己的时候,不要用执行,否则不能调用某函数的其中一个方法,用以下方法:

 if __name__ == '__main__':
        print(函数名())

(2)命名最好不要用中文
(3)每个方法都应该有返回值
(4)不能写成固定的值或者输入值,应该参数化

3、Python中_init_.py文件的作用:
(1)作为package的标识,每个package都要有一个该文件
(2)可以用来精确导入,导入其他函数的方法时使用
(3)定义__all__用来模糊导入

4、函数未指定返回值,默认为None

def sum(a, b):
    c = a + b
    print(c)
z = sum(1,2)
print(z)

#输出结果:
3
None

5、作用域和声明的位置有关系,和调用位置没有任何关系

name = "alex"
def foo():
    name="Banana"
    def bar():
        name="Apple"
        print(name)
    return bar
a = foo()
print(a)
a()

#输出结果:
<function foo.<locals>.bar at 0x000001D4CBD20E58>
Apple

6、文件规范写法
为了一个文件更加规范,也为了其他文件互相调用方便,每个文件内只写功能,测试内容另写一个,如下

def a():
    pass
def b():
    pass
if __name__=="__main__":
    print("test")

7、python中的颜色

s="I am \033[46;1m lalala \033[0m age 18"
print(s)

#输出结果:
I am lalala age 18       #alex是有颜色的

说明:

  • \033[46;1m 放在哪,决定了颜色的起始位置
  • \033[0m 放在哪,决定了结束位置
  • \33[4m 是给相应字体加下划线
  • 46是控制字体背景的颜色
    字背景颜色范围:
    40:黑
    41:深红
    42:绿
    43:黄色
    44:蓝色
    45:紫色
    46:深绿
    47:白色
  • 字颜色范围:
    30:黑
    31:红
    32:绿
    33:黄
    34:蓝色
    35:紫色
    36:深绿
    37:白色
  • 黑底彩色字颜色范围
    90:黑
    91:深红
    92:绿
    93:黄色
    94:蓝色
    95:紫色
    96:深绿
    97:白色

8、is和==的区别
is是对象的标示意符,用来表示两个对象的内存空间是不是一样的,是否用同一块空间地址,而==是比较两个对象的内容是否相等

9、niubility函数
将两个列表打包成字典的形式——dict(zip(name,age))

10、简洁代码(列表推导式)

L = []
for x in range(1, 11):
L.append(x * x)
print(L)

精简写法:
[x * x for x in range(1, 11)]

还可以直接加if判断,但是不能加else

[x * x for x in range(1, 11) if x % 2 == 0]

有一种可以加else的写法:

[x if x % 2 == 0 else -x for x in range(1, 11)]

#输出结果:
[-1, 2, -3, 4, -5, 6, -7, 8, -9, 10]

注意: 在一个列表生成式中,for前面的if … else是表达式,而for后面的if是过滤条件,不能带else

vec1 = [2, 4, 6]
vec2 = [4, 3, -9]
[x*y for x in vec1 for y in vec2]

输出结果:[8, 6, -18, 16, 12, -36, 24, 18, -54]

[x+y for x in vec1 for y in vec2]
输出结果:[6, 5, -7, 8, 7, -5, 10, 9, -3]

[vec1[i]*vec2[i] for i in range(len(vec1))]
输出结果:[8, 12, -54]

嵌套列表操作:

matrix = [
    [1, 2, 3, 4],
    [5, 6, 7, 8], 
    [9, 10, 11, 12],
]
[[row[i] for row in matrix] for i in range(4)]

输出结果:[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值