函数、切片、列表、生成器、iterable、在pycharm中用pip安装包、map、filter、闭包、匿名函数、装饰器、函数和变量的作用域

函数

小知识点

位置参数、关键字参数、默认参数、可变参数

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()

interable

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellobigorange

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值