python第四次笔记

函数

  • 变长参数 类型为元组(元素不可变) 位置在形参最后
def self_print(name,*a):
    print(a)
    print(type(a))
    print(len(a))
self_print(1,2,1,3)
  • **将参数放到字典中
def d_self_print(**name):
    print(name)
d_self_print(first_name = 'anja',last_name = 'adsf')
  • 形参顺序:位置参数->元组->字典
def mix(name,*t,**kit):
    print(name)
    print(t)
    print(kit)
mix('ajdsfn',1,1,nae = 'name',sex = 'male')
  • *有拆元组、列表和字典的作用
t = [1,2,3,4,5]
print(t)
print(*t)
def f(*t):
    print(t)
f(*t)
  • **有拆字典的作用
def dit(**d):
    print(d)
dit(**{'name':'jans','age':12})
  • 元组的声明可以不用()
def avg(*num):
    print(*num)
    total = sum(num)
    print(total)
    avge = total / len(num)
    print(avge)
avg(1,2,3,4,5)

数据分为普通类型和引用类型
python中的基本数据类型都是普通类型。数、布尔型和字符串型
除此之外的类型都是引用类型
普通类型赋值的时候,传的是值
引用类型赋值的时候,传的是量

l1 = [1,2,3,4,5,6]
l2 = l1
l2[2] = 4
print(l1)

传参的本质是赋值操作,如果传递的是引用类型的数据,则需要注意是否在函数中对其做了修改

def power(number):
    numbers = number[:]
    # 创建数据副本
    numbers = [x**2 for x in numbers]
    print(numbers)
number = [1,2,3,4]
power(number)
print(number)

闭包

  • 函数名代表的是函数的地址
def fun():
    print('asds')
f = fun
f()
print(fun)

内层函数可以访问外层函数的值,但不能修改
内层函数访问变量时,会先从内部找,如果找不到,会层层向上查找
python 中,变量的作用域是以函数为单位
global 修改变量时,说明使用的是最外层全局变量
nonlocal 修改变量时,说明使用的是嵌套函数层的变量
闭包 闭包的本质是函数嵌套函数,外层函数返回内层函数的地址

a = 10
def outter():
    a = 10
    def inner():
        # 说明使用的是全局变量
        # global a
        nonlocal a
        print(a)
        a = a-1
        print(a)
    return inner
fo = outter()
fo()
print(a)

递归

函数自己调用自己,编写递归或循环时,一般先考虑出口(结束条件)问题

def factorial(n):
    mm =1
    for num in range(1,n+1):
        mm *= num
    return mm
print(factorial(5))
def factorial1(n):
    if n == 1:
        return 1
    return n * factorial1(n-1)
print(factorial1(5))
  • 菲波那切数列
list1 = []
k = 0
def list(n):
    global k
    global list1
    if k == 0 or k == 1:
         list1.append(1)
    else:
        list1.append(list1[k-2] + list1[k-1])
    if k == n-1:
        return list1
    k += 1
    return list(n)
n = input('请输入个数:')
print(list(n))

高阶函数

函数的参数或函数的返回值是函数的函数

def handle(func,*p):
    return func(*p)
def my_sum(*p):
    sum = 0
    for i in p:
        sum += i
    return sum
print(handle(my_sum,1,2,3,4,5))
def my_mul(*p):
    mul = 1;
    for i in p:
        mul *= i

    return mul
print(handle(my_mul,1,2,3,4,5))
  • map(func,interable)
    函数会把interable中的数据依次传递给func,最后把处理的结果返回
    [1,2,3,4,5]---->[1,4,9,16,25]
def power(x):
    return x*x
result = map(power,[1,2,3,4,5])
print(list(result))
result = map(lambda x : x*x,[1,2,3,4,5,6])

print(list(result))
  • reduce(func,interable)
    函数累计操作,func函数必须接受两个参数,reduce会把func的运行结果做一个参数,然后从interable中再取一个数据当做func的另一个参数
from functools import reduce
li = [1,2,3,4,5,6]
result = reduce(lambda x,y : x*y,li)
print(result)
  • filter(func,interable)
    根据函数func来过滤interable,将interable中的数据传入函数func中,如果函数返回True,就保留该数据,否则不保留
li = [1,2,3,4,5,6,7,8]
result = list(filter(lambda x:x%2 ==1,li))
print(result)
  • sort(interable,key=None,reverse)
    对数据进行排序,key可用来指定排序的规则,值是一个函数,reverse是来指定排序的顺序-->升序和降序
li = [1,-2,43,24,-10]
# li.sort() 影响原数列
print(li)
rs = sorted(li,key=abs,reverse=True)
# 不影响原始数列
print(rs)
print(li)

模块

模块就是一个文件,我们在编写程序时,可以把功能相似的代码放到一个模块中
导入模块的方法:
1、from 模块名 import 函数名(*为通配符)
2、import 模块名
可以使用as 给模块或函数起别名

from p17 import make_pizza as mp
from p16 import make_pizza
mp()
make_pizza()
import p17
p17.make_pizza()
p17.make_bun()
import p17 as p
p.make_bun()
p.make_pizza()
  • print(ff.doc)和help(ff)可以查看函数的注释
  • 元组数据不可改变
# 地址不变 a[1]位置储存的是列表地址
a = (1,[1,2],3)
a[1].append(3)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容