为了账号安全,请及时绑定邮箱和手机立即绑定
  • https://img1.sycdn.imooc.com/66dafaa20001aec410690656.jpg

    Teacher 继承 Student 时,__init__()括号中需要写被继承类的全部参数, super(Teacher, self).__init__(name, gender)报错是因为缺少了Student的score参数; t = Teacher('Alice', 'Female', 'English') Teacher继承Student的三个参数后又定义了course参数,共4个参数,这个地方少了一个参数


    查看全部
    0 采集 收起 来源:Python判断类型

    2024-09-06

  • 有参数的decorator

    在外面套一层专门接收参数的函数

    例:

    请给 @performace 增加一个参数,允许传入's'

    import time
    from functools import reduce
    
    def performance(prefix):
        def performance_decorator(f):
            def fn(*args, **kwargs):
                t1 = time.time()
                f(*args, **kwargs)
                t2 = time.time()
                print('函数f运行时间是{}{}'.format(t2 - t1,prefix))
            return fn
        return performance_decorator
    
    @performance('s')
    def f(list_):
        return reduce(lambda x,y: x*y, list_)
    
    f(list(range(1,10000)))

    解释:

    def performance(参数):

        def performance_decorator(函数f):

            ...

        return performance_decorator

    performance_decorator = performance(参数)

    新函数 = performance_decorator(原函数)

    查看全部
  • 装饰器的作用:

    给原函数装饰装饰变成新函数

    装饰器的语法:

    @+装饰器函数名


    例:

    编写一个decorator计算函数的运行时间

    import time
    from functools import reduce
    
    def performance(f):
        def fn(*args, **kwargs):
            t1 = time.time()
            f(*args, **kwargs)   #接收函数用*args,**kwargs;在函数中用args,kwargs
            t2 = time.time()
            print('函数f运行时间是{}s'.format(t2 - t1))
        return fn
    
    @performance
    def f(list_):
        return reduce(lambda x,y: x*y, list_)
    
    f(list(range(1,100000)))
    ==>函数f运行时间是2.1856231689453125s

    解释:

    1. 将函数f作为参数传给函数performance

    2. 函数performance接收原函数f

    3. 在函数performance中定义新函数fn,新函数的参数用来接收原函数的参数,一般设为*args,**kwargs可接收任何形式参数

    4. 装饰原函数

    5. 返回新函数fn

    查看全部
  • def calc_sum(list_):
        def lazy_sum():
            return sum(list_)
        return lazy_sum
    f = calc_sum([1, 2, 3, 4])
    f()
    ==>10

    闭包:

    内层函数引用外层函数的变量(参数也算是变量),最后外层函数返回内层函数

    那么这个内层函数就是一个闭包(类似打包返回)


    错误写法:

    # 希望一次返回3个函数,分别计算1x1,2x2,3x3:
    def count():
        fs = []
        for i in range(1, 4):
            def f():
                 return i*i
            fs.append(f)
        return fs
    
    f1, f2, f3 = count() #内层函数只被定义还没运行,此时外层函数运行完毕i=3
    f1()==>9   #运行内层函数
    f2()==>9
    f3()==>9


    正确写法:

    def count():
        fs=[]
        for i in range(1,4):
            def g(j=i):       #为内层函数设置形参默认值
                return j*j
            fs.append(g)
        return fs
    
    f1,f2,f3=count()
    print(f1(),f2(),f3())

    在Python中,函数形参默认值是指在定义函数时为形参指定的默认值,在调用函数时,如果没有为该形参提供实际的参数值,函数会使用默认值

    查看全部
    0 采集 收起 来源:Python的闭包

    2024-09-03

  • Python在函数内部定义子函数,并把子函数返回

    def f():
        def g():
            return ...
        return g
    x = f()
    x()

    函数名g就是指向函数g的变量

    不加小括号就只是一个变量,加上小括号才能调用函数

    查看全部
    0 采集 收起 来源:Python返回函数

    2024-09-03

  • 匿名函数

    lambda 参数 : 表达式

    可以有多个参数,但只能有一个表达式,返回值就是表达式的结果


    例:

    map(lambda x:x*x,[1,2,3,4])
    reduce(lambda x,y:x*y,[1,2,3,4])
    sorted(['bob', 'about', 'Zoo', 'Credit'],key=lambda x:x.lower())
    查看全部
  • sorted(list, (key=函数对象f, reverse=True)) 默认从小到大排序

    函数f的作用:

    接受待排序列表的元素作为参数传入函数f,并返回真正需要排序的字段

    例1:

    (姓名,成绩)按成绩进行排序

    def f(item):
        return item[1]
    print(sorted([('Alice', 72), ('Candy', 90), ('Bob', 62)],key=f))
    ==>[('Bob', 62), ('Alice', 72), ('Candy', 90)]

    例2:

    对字符串忽略大小写进行排序

    def f(item):
        return item.lower()
    print(sorted(['bob', 'about', 'Zoo', 'Credit'],key=f))
    ==>['about', 'bob', 'Credit', 'Zoo']
    查看全部
  • filter(函数f, list)将函数f作用到list的每个元素上,对元素进行判断,筛选出为True的元素(以迭代器形式)

    例1:

    利用filter()函数,删除 None 或者空字符串

    def is_not_empty(s):
        return s and s.strip()
    
    for item in filter(is_not_empty, ['test', None, '', 'str', '  ', 'END']):
        print(item)

    str.strip()删除字符串str中的空白字符

    例2:

    利用filter()过滤出1~100中平方根是整数的数

    import math
        
    def sqrt_is_int(n):
        # 解题思路:如果将一个数的平方根的整数部分再平方仍然等于这个数,则他的平方根一定是整数
        return int(math.sqrt(n))*int(math.sqrt(n)) == n
        
    for item in filter(sqrt_is_int,list(range(1,101))):
        print(item)
        
        
    # math.sqrt()的结果是float
    # float*float结果可能是int
    查看全部
  • reduce(函数f, list)对list的元素顺序累(积/加...)

    函数f必须接收两个参数

    例:

    Python内置了求和函数sum(),但没有求积的函数,请利用recude()来求积

    from functools import reduce
    def f(x,y):
        return x*y
    
    print(reduce(f,[1,3,5,7,9]))     
    ==>
    f(1,3)  f(3,5)  f(15,7)  f(105,9)
    945
    查看全部
  • map(函数f, list) 把函数f作用在list的每一个元素上

    例:

    请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字(首字母大写,后续字母小写)的list:

    输入:['alice', 'BOB', 'CanDY']
    输出:['Alice', 'Bob', 'Candy']

    def f(s):
        return s[0].upper() + s[1:].lower()
        
    for item in map(f,['alice', 'BOB', 'CanDY']):
        print(item)
    ==>
    Alice
    Bob
    Candy

    str.lower()将字符串str变成小写

    str.upper()将字符串str变成大写

    注意:

    1. 字符串切片会得到一个子字符串

    2. 字符串的不可变性,不能在原字符串上修改某个索引位置

    查看全部
  • 请从页面返回的内容中,过滤出链接含有www的内容。

    import requests
    from bs4 import BeautifulSoup
    
    url = "https://www.imooc.com"
    response = requests.get(url)
    
    if response.status_code == 200:
        # 使用BeautifulSoup解析页面内容
        soup = BeautifulSoup(response.text, 'html.parser') #'html.parser'是HTML解析器
    
        # 找到所有的链接
        links = soup.find_all('a')         #使用find_all()来查找特定标签find_all()
    
        # 筛选出包含'www'的链接
        www_links = [link['href'] for link in links if link.get('href')!=None and 'www' in link['href']]       #以字典形式传入属性得到属性值
    
        for link in www_links:
            print(link)
    else:
        print("Failed to retrieve the webpage")
    查看全部
    0 采集 收起 来源:HTTP响应的内容

    2024-09-02

  • 网络通信

    server.py

    import socket
    
    server = socket.socket() #创建server
    
    server.bind(('127.0.0.1',8999)) #绑定IP和端口     127.0.0.1是本机回环IP
    
    server.listen(5)  #监听端口(端口的最大连接数量)
    
    s , client_info = server.accept()  #接受连接,返回一个新的socket代理这个连接,和客户端的信息(IP,端口)
    
    data = s.recv(1024)   #接收数据(最大字节数)
    
    while 1:
        data_append = s.recv(1024)
        if str(data_append,'utf-8') == 'end':
            print(str(data,'utf-8'))
            data = b''
        else:
            data += data_append

    client.py

    import socket
    
    client = socket.socket() #创建client
    
    client.connect(('127.0.0.1',8999)) #连接server
    
    while 1:
        data = input('echo>>>')
        client.send(bytes(data,'utf-8')) #发送bytes
    查看全部
  • 常用模式怎么记?

    前操作,后文件格式,默认文本格式

    r,rb

    w,wb

    a,ab

    查看全部
  • 一般使用close()关闭文件,但如果在close()之前,程序异常退出了,那么文件就得不到正确的关闭,就会造成文件损坏,文件内容丢失的问题

    with关键字:

    会确保不管在使用过程中是否发生异常,都会执行必要的“清理”的操作,释放资源,比如文件使用后自动关闭等等。

    查看全部
  • seek(index)移动文件中的游标位置

    index:0 文件首部   index:2 文件尾部


    注意:

    往文件中写完内容后,游标会在文件尾部,如果之后想读取文件内容,需要把游标移动到文件首部,否则读取不到任何内容

    with open('requirements.txt','a') as f:
        f.write('aaa\n')
        print(f.readlines())
    ==>io.UnsupportedOperation: not readable
    查看全部

举报

0/150
提交
取消
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!