文章目录
函数
小知识点
位置参数、关键字参数、默认参数、可变参数
1、空函数
2、== 定义默认参数要牢记一点:默认参数必须指向不变对象!==
3、可变参数的解包和打包
nums是一个元组,*nums是可变参数1,2,3…
def my_abs(*nums):
for i in nums:
print(i)
my_abs(1,2,3)
my_abs(*(1,2,3))
my_abs(*[1,2,3])
4、关键字参数的解包和打包
dict1是一个字典,函数入参时用a=“hello”,b=1…
def my_abs(**dict1):
for key, val in dict1.items():
print("key:%s, val:%s" % (key, val))
my_abs(fruit='apple', name='orange')
my_abs(**{'fruit': "apple", "name": "orange"})
结果:
key:fruit, val:apple
key:name, val:orange
5、命名关键字参数
命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错:
6、参数的顺序
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
二、高级特性
1、切片
2、列表生成式
>>> [i for i in range(100) if i%2 == 0]
>>> [m + n for m in 'ABC' for n in 'XYZ']
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> [k + '=' + v for k, v in d.items()]
# 注意:要是带else则必须将if写在for前面
>[x if x%2==0 else -x for x in range(10)]
3、生成器
在Python中,这种一边循环一边计算的机制,称为***生成器:generator***。
边循环边计算,节省了空间。
g = (x * x for x in range(10))
print("第一个元素:", next(g))
for n in g:
print(n)
generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
# 杨辉三角,用生成器实现
# -*- coding: utf-8 -*-
def triangles():
l=[1]
while True:
yield l
l=[l[j] + val for j, val in enumerate(l[1:])]
l.insert(0,1)
l.append(1)
i = 0
for t in triangles():
print(t)
i += 1
if i > 10:
break
4、可迭代对象和迭代器
把Iterable变为Interator用iter()
怎么在pycharm中使用pip安装包
在底部找到terminal窗口,输入
pip install phecda-1.0.14-py3-none-any.whl
注意whl文件要放到对应文件夹下,如下图
函数式编程
1、变量可以指向函数,这就具备了和函数相同的功能。
2、函数的参数能够接收别的函数
3、interator
interator = map(f,interable)
interator = filter(f,interable)
interator = reduce(f,interable)
sorted()
4、闭包
闭包理解为一种特殊的函数,这种函数由两个函数的嵌套组成,且称之为外函数和内函数,外函数返回值是内函数的引用,此时就构成了闭包。
5、匿名函数
def is_odd(n):
return n % 2 == 1
L = list(filter(lambda n :n%2, range(1, 20)))
6、装饰器
在代码运行期间动态增加功能的方式,称之为“装饰器(Decorator)。
def log(func):
def wrapper(*args, **kw):
print('call %s():' % func.__name__)
return func(*args, **kw)
return wrapper
@log
def now():
print('2015-3-25')
now()
总结
一层传装饰器参数,一层传函数,一层传函数的参数(闭包)
函数和变量的作用域
不希望对外部暴露的方法,我们使用_,相当于private
def _private_1(name):
return 'Hello, %s' % name
def _private_2(name):
return 'Hi, %s' % name
def greeting(name):
if len(name) > 3:
return _private_1(name)
else:
return _private_2(name)
手机内存:运行内存+存储空间
计算机主要硬件的组成:
CPU
电脑内存:软件运行,文件编辑,速度快于硬盘
硬盘:保存文件
显卡:GPU