精华内容
下载资源
问答
  • python封装函数调用

    千次阅读 2020-04-08 16:35:36
    封装函数-模块 定义: 一个.py文件就是一个模块(把一个函数写入py文件中存起来被其它py文件调用) 1.模块管理函数 定义: 模块管理函数就是将函数的定义放到一个.py文件中.可以在其他.py文件中通过import关键字导入...

    封装函数-模块
    定义:  一个.py文件就是一个模块(把一个函数写入py文件中存起来被其它py文件调用)

    1.模块管理函数
    定义: 模块管理函数就是将函数的定义放到一个.py文件中.可以在其他.py文件中通过import关键字导入模块.导入

    后就可以使用模块名+函数名的方式去使用其他模块中的函数.(也就是说把一个函数独立封装到一个py文件中,在另

    一个py文件中,要想使用这个函数,首先导入模块名,然后再调用模块中的函数名(模块名就是把函数封装到那个py文件的文件名))

    注意: 模块中的变量不能在模块之外单独使用,模块中的变量只针对模块中的代码使用(比如:你想在py文件1中调用

    py文件2中的变量,那是不得行的.)

    2.使用模块
    方法(1):
    要想使用模块中的函数需要:模块名+函数名
      

    import  module  #这个module就是封装函数的那个文件名
    aa = module.sum(1, 2)   #模块名.函数名
    print(aa)


    方法(2):
    导入指定模块中指定的函数:form 模块名 import 函数名
      

    form module import count_letter_number     #例如导入以下函数
    ​


    import的功能:相当于把被导入的模块中的代码拷贝到import的位置.
    方法(3):
    如果函数名相同,我们又想不改变函数名.可以通过as关键字可以更改模块名和函数名.目的是防止命名相同,产生冲突.

    form module import count_letter_number as sum     #这里的sum是将封装好的函数名count_letter_number在调用时零时更改为sum



    注意: 函数如果同名:后面的函数会覆盖前面的函数.模块下的函数名与被导入模块中的函数名相同时,则会执行模块下的函数,不会执行模块中的函数.
    3.不导入执行语句,只导入函数

    if __name__ == '__main__':     #把它看成一把闭加锁


      
    使用它就相当于一把锁.把执行语句放在它下面可以阻止其它模块去执行这些内容.要想不被模块调用函数中的执行语句,就把函数名放在它下面,保护起来.
    例如:

    def count_letter_number(string):
        letter_count = 0
        digit_count = 0
        for ch in string:
            if 'a' <= ch <= 'z' or 'A' <= ch <= 'Z':
                letter_count += 1
            elif '0' <= ch <= '9':
                digit_count += 1
        return letter_count, digit_count
    ​


    # 比如我们只想导入以上这一部分函数,不需要导入以下的main()函数,那么我们就把main()函数执行的返回值放在if里面.main()函数只能在本文件名中执行,不会被其他模块调用.

    def main():
        print(count_letter_number('a1b2c3d4'))  # (4, 4)
        print(count_letter_number('a123456b'))  # (2, 6)      #执行语句
        print(count_letter_number('123456!!'))  # (0, 6)
    ​
    if __name__ == '__main__':
        main()
    # 总结:如果对封装的函数返回的结果不想在导入的模块中执行,那么就把函数执行返回的函数名放在if __name__ == '__main__':下面保护起来.它就相当于一把闭加锁。


     

    展开全文
  • python 封装 公共函数

    2020-08-25 17:46:09
    常用功能封装参考https://www.cnblogs.com/TLL-home/p/10952263.html python优化及数据库批量操作https://blog.csdn.net/lemon_tree12138/article/details/50854673
    展开全文
  • Python操作Excel写在前面分析准备认识Excel格式区别库的使用整体思路 写在前面 对比其它编程语言,我们都知道Python最大的优势是代码简单,有丰富的第三方开源库供开发者使用。伴随着近几年数据分析的热度,Python也...

    在这里插入图片描述

    1. 写在前面

    对比其它编程语言,我们都知道Python最大的优势是代码简单,有丰富的第三方开源库供开发者使用。伴随着近几年数据分析的热度,Python也成为最受欢迎的编程语言之一。而对于数据的读取和存储,对于普通人来讲,除了数据库之外,最常见的就是微软的Excel。

    2. 前期准备

    2.1. 初识Excel

    Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。

    2.2. 格式区别

    Excel中有xls和xlsx两种格式,它们之间的区别是:

    • 文件格式不同。xls是一个特有的二进制格式,其核心结构是复合文档类型的结构,而xlsx的核心结构是XML类型的结构,采用的是基于 XML的压缩方式,使其占用的空间更小。xlsx 中最后一个 x 的意义就在于此。
    • 版本不同。xls是Excel2003及以前版本生成的文件格式,而xlsx是Excel2007及以后版本生成的文件格式。
    • 兼容性不同。xlsx格式是向下兼容的,可兼容xls格式。

    2.3. 库的使用

    当我们要操作xls格式文件时,需要使用到xlrd和xlwt这两个第三方库;当我们要操作xlsx格式文件时,则需要使用到openpyxl第三方库。

    模块 来源 支持格式
    xlrd 第三方库 × xls
    xlwt 第三方库 × xls
    openpyxl 第三方库 xlsx

    2.4. 整体思路

    当使用以上几个模块的时候,从理论上我们就可以完全操作不同格式的Excel的读和写,很多人就疑惑,那这篇文章的作用是什么?我们直接学习对应的这三个模块不就好了吗?答案就是:虽然这几个库已经把Excel的文件、表、行、列的概念完全转换为Python中的对象,但每次操作都需要遍历每一个单元格,甚至很多时候我们要花费大量的时间在思考循环单元格的边界上,这本身就是在重复造轮子,因此我花了半天时间整理了以下六个函数。

    方法名 作用 参数 参数注释 返回值 返回值注释
    read_xls_excel 读取xls格式Excel数据 url,index ①文件路径,②工作表序号(第几个工作表,传入参数从1开始数) data 表格中的数据
    write_xls_excel 写入xls格式Excel数据 url,sheet_name,two_dimensional_data ①文件路径,②表名,③将要写入表格的数据(二维列表)
    write_xls_excel_add 追加写入xls格式Excel数据 url, two_dimensional_data, index ①文件路径,②将要写入表格的数据(二维列表),③指定要追加的表的序号(第几个工作表,传入参数从1开始数)
    read_xlsx_excel 读取xlsx格式Excel数据 url,index ①文件路径,②工作表序号(第几个工作表,传入参数从1开始数) data 表格中的数据
    write_xlsx_excel 写入xlsx格式Excel数据 url, sheet_name, two_dimensional_data ①文件路径,②表名,③将要写入表格的数据(二维列表)
    write_xlsx_excel_add 追加写入xlsx格式Excel数据 url, sheet_name, two_dimensional_data ①文件路径,②表名,③将要写入表格的数据(二维列表)

    3. 代码展示

    3.1. xls格式

    3.1.1. 读取xls格式文件

    '''
    读取xls格式文件
    参数:
        url:文件路径
        index:工作表序号(第几个工作表,传入参数从1开始数)
    返回:
        data:表格中的数据
    '''
    def read_xls_excel(url,index):
        # 打开指定的工作簿
        workbook = xlrd.open_workbook(url)
        # 获取工作簿中的所有表格
        sheets = workbook.sheet_names()
        # 获取工作簿中所有表格中的的第 index 个表格
        worksheet = workbook.sheet_by_name(sheets[index-1])
        # 定义列表存储表格数据
        data = []
        # 遍历每一行数据
        for i in range(0, worksheet.nrows):
            # 定义表格存储每一行数据
            da = []
            # 遍历每一列数据
            for j in range(0, worksheet.ncols):
                # 将行数据存储到da列表
                da.append(worksheet.cell_value(i, j))
            # 存储每一行数据
            data.append(da)
        # 返回数据
        return data
    

    3.1.2. 写入xls格式文件

    '''
    写入xls格式文件
    参数:
        url:文件路径
        sheet_name:表名
        two_dimensional_data:将要写入表格的数据(二维列表)
    '''
    def write_xls_excel(url,sheet_name,two_dimensional_data):
        # 创建工作簿对象
        workbook = xlwt.Workbook()
        # 创建工作表对象
        sheet = workbook.add_sheet(sheet_name)
        # 遍历每一行数据
        for i in range(0,len(two_dimensional_data)):
            # 遍历每一列数据
            for j in range(0,len(two_dimensional_data[i])):
                # 写入数据
                sheet.write(i,j,two_dimensional_data[i][j])
        # 保存
        workbook.save(url)
        print("写入成功")
    

    3.1.3. 追加写入xls格式文件

    '''
    追加写入xls格式文件
    参数:
        url:文件路径
        two_dimensional_data:将要写入表格的数据(二维列表)
        index:指定要追加的表的序号(第几个工作表,传入参数从1开始数)
    '''
    def write_xls_excel_add(url, two_dimensional_data, index):
        # 打开指定的工作簿
        workbook = xlrd.open_workbook(url)
        # 获取工作簿中的所有表格
        sheets = workbook.sheet_names()
        # 获取指定的表
        worksheet = workbook.sheet_by_name(sheets[index-1])
        # 获取表格中已存在的数据的行数
        rows_old = worksheet.nrows
        # 将xlrd对象拷贝转化为xlwt对象
        new_workbook = copy(workbook)
        # 获取转化后工作簿中的第index个表格
        new_worksheet = new_workbook.get_sheet(index-1)
        # 遍历每一行数据
        for i in range(0, len(two_dimensional_data)):
            # 遍历每一列数据
            for j in range(0, len(two_dimensional_data[i])):
                # 追加写入数据,注意是从i+rows_old行开始写入
                new_worksheet.write(i+rows_old, j, two_dimensional_data[i][j])
        # 保存工作簿
        new_workbook.save(url)
        print("追加写入成功")
    

    3.2. xlsx格式

    3.2.1. 读取xlsx格式文件

    '''
    读取xlsx格式文件
    参数:
        url:文件路径
        sheet_name:表名
    返回:
        data:表格中的数据
    '''
    def read_xlsx_excel(url, sheet_name):
        # 使用openpyxl加载指定路径的Excel文件并得到对应的workbook对象
        workbook = openpyxl.load_workbook(url)
        # 根据指定表名获取表格并得到对应的sheet对象
        sheet = workbook[sheet_name]
        # 定义列表存储表格数据
        data = []
        # 遍历表格的每一行
        for row in sheet.rows:
            # 定义表格存储每一行数据
            da = []
            # 从每一行中遍历每一个单元格
            for cell in row:
                # 将行数据存储到da列表
                da.append(cell.value)
            # 存储每一行数据
            data.append(da)
        # 返回数据
        return data
    

    3.2.2. 写入xlsx格式文件

    '''
    写入xlsx格式文件
    参数:
        url:文件路径
        sheet_name:表名
        two_dimensional_data:将要写入表格的数据(二维列表)
    '''
    def write_xlsx_excel(url, sheet_name, two_dimensional_data):
        # 创建工作簿对象
        workbook = openpyxl.Workbook()
        # 创建工作表对象
        sheet = workbook.active
        # 设置该工作表的名字
        sheet.title = sheet_name
        # 遍历表格的每一行
        for i in range(0, len(two_dimensional_data)):
            # 遍历表格的每一列
            for j in range(0, len(two_dimensional_data[i])):
                # 写入数据(注意openpyxl的行和列是从1开始的,和我们平时的认知是一样的)
                sheet.cell(row=i + 1, column=j + 1, value=str(two_dimensional_data[i][j]))
        # 保存到指定位置
        workbook.save(url)
        print("写入成功")
        
    

    3.2.3. 追加写入xlsx格式文件

    '''
    追加写入xlsx格式文件
    参数:
        url:文件路径
        sheet_name:表名
        two_dimensional_data:将要写入表格的数据(二维列表)
    '''
    def write_xlsx_excel_add(url, sheet_name, two_dimensional_data):
        # 使用openpyxl加载指定路径的Excel文件并得到对应的workbook对象
        workbook = openpyxl.load_workbook(url)
        # 根据指定表名获取表格并得到对应的sheet对象
        sheet = workbook[sheet_name]
        for tdd in two_dimensional_data:
            sheet.append(tdd)
        # 保存到指定位置
        workbook.save(url)
        print("追加写入成功")
    

    4. 结果测试

    4.1. 读取测试

    先准备两个Excel文件,如图所示
    在这里插入图片描述
    其内容如下:
    在这里插入图片描述
    在这里插入图片描述
    测试代码:
    在这里插入图片描述
    输出结果:
    在这里插入图片描述
    结论:表明读取并没有问题!!!接下来测试写入

    4.2. 写入测试

    测试代码:
    在这里插入图片描述
    结果输出:
    在这里插入图片描述
    看到数据被覆盖了!!!接下来在上面修改后的数据的基础上测试追加写入

    4.3. 追加写入测试

    测试代码:
    在这里插入图片描述
    结果输出:
    在这里插入图片描述
    追加也没有问题!!

    5. 总结

    我一直认为数据分析就应该以数据为主,而不应该把大量的代码花费在设计Excel表格的样式上,这样多少就有点主客颠倒的意思了。总之,希望这篇文章对正在学习Python的你有一定的帮助,如果对你有帮助的话,不妨点个赞和收藏吧!如果有什么意见和建议也欢迎在评论区留言!

    展开全文
  • 很多时候,我们想利用函数来简化程序,降低维护成本。那么怎么利用函数达到目的呢?这里列举几种基础函数用法。 类似str()的工具型 def A(a): b=a+1 return(b) 这种函数的典型特点是不改变全局、有返回值,使用...

    本文仅供像我一样的小白使用
    很多时候,我们想利用函数来简化程序,降低维护成本。那么怎么利用函数达到目的呢?这里列举几种基础函数用法。
    类似str()的工具型

    def A(a):
    	b=a+1
    	return(b)
    

    这种函数的典型特点是不改变全局、有返回值,使用时必须结合其他函数,它只是一个“工具”。
    简化代码的过程型

    def benjin1():#此函数用于采集数据
        while 1 :
            try:
                global benjin
                benjin=float(input('请输入初始本金,只保留数字,支持小数'))
                break
            except:
                print('输入数据类型有误,请重新输入')
    

    这种函数的一个特点就是自变量、因变量无所谓,它只是为了简化代码,便于维护。
    例如下面的定投收益计算工具:

    def benjin1():
        while 1 :
            try:
                global benjin
                benjin=float(input('请输入初始本金,只保留数字,支持小数'))
                break
            except:
                print('输入数据类型有误,请重新输入')
    def dingtou1():
        while 1 :
            try:
                global dingtou
                dingtou=float(input('请输入定投金额,只保留数字,支持小数'))
                break
            except:
                print('输入数据类型有误,请重新输入')
    def time1():
        while 1 :
            try:
                global time
                time=int(input('请输入定投月份,只保留整数'))
                break
            except:
                print('输入数据类型有误,请重新输入')
    def shouyilv1():
        while 1 :
            try:
                global shouyilv
                shouyilv=1.0+float(input('请输入每月预估收益率,只保留数字,支持小数,不支持百分数'))
                break
            except:
                print('输入数据类型有误,请重新输入')
    def shouyi1():
        global shouyi
        shouyi=benjin*shouyilv**time
        for i in range(time):
            shouyi=shouyi+dingtou*shouyilv**(time-i)
        print('理论收益是%f'%shouyi)
    while 1 :
        benjin1()
        dingtou1()
        shouyilv1()
        time1()
        shouyi1()
    

    采用自定义函数可以让程序模块化,当出现bug时,做到有的放矢,并且并且也便于更新和增减功能。
    当然也可以利用if函数实现函数的开关:

    def shouyi1(a):
        if a==1:
            global shouyi
            shouyi=benjin*shouyilv**time
            for i in range(time):
                shouyi=shouyi+dingtou*shouyilv**(time-i)
            print('理论收益是%f'%shouyi)
        else:
            print('函数未开启')
    

    过程型函数通常不需要设置自变量和因变量,但有时候我们需要一个既能改变全局,又能有返回值的函数,这时候我们要注意,自变量也是一个局部变量,而且一个变量不能兼任局部变量和全局变量,这就是一个典型的错误:

    def hanshu(a):
        global a
        a=a+1
        return(a)
    

    此时必定报错:name ‘a’ is parameter and global
    正确的做法是:

    def hanshu(b):
        global a
        a=b+1
        return(a)
    
    展开全文
  • from urllib import request, parse from urllib.error import HTTPError,...import json **#post方法** def post(url, form, headers=None): return url_requests(url, form,headers=headers) **#get方法** ...
  • 今天需要在python里调用一个c++函数,因此各种查资料,发现boost.python库的使用还是很简单的。在这总结一下,以供大家参考。 给大家几个链接,在这里提醒大家,很多资料由于时间久远,可能boost的版本比较低,较高...
  • 封装函数实现网页登入代码 1.开发环境:pycharm。 2.代码实现: def login (username,password): name = 'admin123' pwd = '123456' for i in range(3): if username ==name and password == pwd: print('登入...
  • 参数传递方式则规定了python向C函数传递参数的具体形式,可选的两种方式是METH_VARARGS和METH_KEYWORDS,其中METH_VARARGS是参数传递的标准形式,它通过python的元组在python解释器和c函数之间传递参数,若采用METH_...
  • Python封装

    千次阅读 2021-04-16 16:46:53
    Python基础之封装 一、什么是封装   在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其含义是其他程序无法调用。   要了解封装,离不开“私有化”,就是...
  • Python 函数封装

    千次阅读 2012-03-22 15:39:34
    自己在项目中用到的几个函数封装 1.北京时间转换为世界时 def BTC_to_UTC(btc_time): utc_struct = time.mktime([int(btc_time[0:4]),int(btc_time[4:6]),\ int(btc_time[6:8]),int(btc_time[8:10]),
  • Python 嵌套函数

    万次阅读 多人点赞 2017-06-28 21:35:37
    Python 中,函数的用法可谓是千变万化,只不过我们平日接触的大多是一些基本用法。函数强大之处当然不止于此,它还有很多高级用法 - 闭包、装饰器。。。 这些高级用法都与嵌套函数紧密相关,所以有必要先熟悉...
  • python 函数封装

    千次阅读 2014-07-16 15:16:59
    回到原题,globals可以将全局空间的所有函数和变量的名字都作为key(字符串),值作为value记录下来,而通过这种方法既可以实现函数封装 不废话,上例子 #添加要执行的动作 def AddAction(name,*params): ...
  • python自定义函数

    千次阅读 2018-06-01 16:33:57
    Python提供了许多内建函数,比如print()等。也可以创建用户自定义函数函数定义 函数定义的简单规则: 函数代码块以def关键词开头,后接函数标识符名称和圆括号(),任何传入参数和自变量必须放在圆括号中间 ...
  • Python函数

    2016-07-11 22:45:25
    Python函数程序语言的函数 许多程序设计语言中,可以将一段经常需要使用的代码封装起来,在需要使用时可以直接调用,这就是程序中的函数(有的程序语言中也叫方法–比如JAVA语言)。 1. C语言函数/* 该函数返回x,y...
  • 将自定义函数 ,将自定义函数 封装函数模块,然后导入模块,再调用里面的函数装为函数模块,然后导入模块,再调用里面的函数 原理:将python模块文件的全局作用域变成了新模块对象的局部作用域。 ...
  • python - 函数封装与调用

    千次阅读 2019-06-29 23:39:00
    一.函数的定义,函数名,函数体以及函数的调用 ...3.函数封装与调用 #函数封装 def yue(): print('美女,约不约') print('不约') print('我这么帅,不约?') print('不约') #调用y...
  • 先聊聊java中的函数吧java函数位于 类 文件内部,以权限修饰词开头(当然也可以不写,默认为default权限),然后是返回值声明,接下来是函数的名字,再然后就是形参了class User{ private String name; public ...
  • python数据库函数封装调用

    千次阅读 2015-02-05 21:46:10
    本文主要是Python操作SQLServer示例,包括执行查询及更新操作(写入中文)。 需要注意的是:读取数据的时候需要decode('utf-8'),写数据的时候需要encode('utf-8'),这样就可以避免烦人的中文...此外代码中使用的封装
  • Python3 函数

    千次阅读 2016-05-25 21:07:20
    Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这...
  • Python 内置函数详解

    千次阅读 多人点赞 2019-11-13 17:21:35
    Python 的内置函数数量众多,功能强大,如果能够灵活运用,必将极大地提高编程效率。不过,在大家公认的所谓内置函数里面,有很多并不是真的函数,而是内置类,只是因为使用起来和真正的函数没有什么不同,所以也就...
  • python函数

    千次阅读 2018-02-08 14:36:41
    Python 函数函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被...
  • python封装exe+exe封装服务

    千次阅读 2018-08-18 18:46:38
    python封装exe+exe封装服务 python封装exe+exe封装服务 一、python封装exe 安装pyinstaller: 打包 二、exe封装为服务 使用SC指令封装服务 使用nssm封装服务 一、python封装exe 本来使用的python...
  • Python map函数

    2018-10-19 09:52:52
    map函数 按照我的理解,这就是封装的原理啊。你写好一个函数,给你一个接口,去调用。 上图自己去理解
  • python封装实例

    2020-02-15 10:30:39
    python封装实例 封装是面向对象的三大特性之一 封装指的是隐藏对象中一些不希望被外部所访问到的属性或方法 如何隐藏一个对象中的属性? - 将对象的属性名,修改为一个外部不知道的名字 如何获取(修改)对象中的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 141,240
精华内容 56,496
关键字:

python封装函数

python 订阅