• Python知识体系-基础知识03-函数/类/模块


    函数

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

    参数

    参数种类

    • 必备参数 必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样 arg1
    • 默认参数 调用函数时,默认参数的值如果没有传入,则被认为是默认值。 arg1=None
    • 不定长参数 参数长度未知时,使用此参数 *args
    • 未知参数 参数未知时,使用此参数 **kwargs
    def demo1(arg1, arg2, file_path=None, *args, **kwargs):
    	pass
    

    匿名函数lambda

    使用 lambda 来创建匿名函数.

    匿名函数的特点

    • 表达式简单,只有一行。便于阅读和维护
    • 独立命名空间,只能访问 lambda 中的参数
    • 只封装简单逻辑,走精简风。

    函数语法

    # 表达式语法
    lambda [arg1 [,arg2,.....argn]]:expression
    # 样例
    sum = lambda arg1, arg2: arg1 + arg2;
    

    变量作用域

    变量作用域

    • 局部作用域: 只作用在某个范围,函数或类中。
    • 全局作用域 作用在整个程序中,程序中任何位置都可以读取和修改全局变量,但是不建议项目使用。
    global_arg = 0
    def demo1(count=0)
    	global global_arg 
    	global_arg += 1
    	print("demo1 %d"%global_arg)
    	demo2()
    	
    def demo2():
    	global global_arg 
    	print("demo2 1 %d"%global_arg)	
    	global_arg += 1
    	print("demo2 2 %d"%global_arg)	
    # count 是函数demo1中的 局部变量
    # global_arg 是程序的全局变量
    

    类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

    类的三大特性: 继承 多态 封装

    http://www.cnblogs.com/ajaxa/p/9049518.html

    模块

    Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

    代码样例

    # file demo.py
    def func(arg):
    	return arg
    

    模块的使用

    import demo
    print demo.func(1)
    
    from demo import func
    print func(1)
    
    

    使用 dir() 获取模块中所有函数列表

    如果将整个目录作为包,需要目录中含有 __init__.py 文件

    代码样例

    # demo/demo1.py
    def get_val(arg):
    	return arg
    	
    # demo/__init__.py
    #! -*- coding:utf-8 -*-
    
    # demo/demo2.py
    from demo.demo1 import get_val
    def func(arg):
    	get_val(arg)
    if __name__ == '__main__':
    	func(2)
    

    将模块当成脚本运行 python -m
    python -m demo.demo2

    文档风格

    如下是reST文档风格

    # 文件中内置包引用,统一管理
    import datetime
    def demo1(arg1, arg2, file_path=None, *args, **kwargs):
        u""" 函数注释(和下方param空行)
    
        :param arg1: 参数1  (格式说明  :param+空格+参数+:+空格+参数解释)
        :type arg1: int
        :param arg2: 参数2
        :type arg2: int
        
        :returns: The return value. True for success, False otherwise.
        :rtype: bool
    
        .. _PEP 484:
            https://www.python.org/dev/peps/pep-0484/
        
    	"""
    	# 延迟调用   
        import pandas as pd
        if file_path:
        	pd.read_csv(file_path,**kwargs)
        
        now_time = datetime.datetime.now()
        return arg3 if bool(arg3) else arg1 + arg2
        
    if __name__ == '__main__':
    	demo1(1,2)
    

    参考资源

    Python函数说明 https://www.runoob.com/python/python-functions.html
    Python模块说明 https://www.runoob.com/python/python-modules.html
    面向对象 类说明 https://www.runoob.com/python3/python3-class.html
    类的详解 https://blog.csdn.net/weixin_42105064/article/details/80151587

  • 相关阅读:
    C#的GroupBy方法是如何工作的
    流媒体技术探索(一)
    战争雷霆-鼠标穿透
    继承与ER图
    从零开始的文档对象模型(结束更新)
    [hackerrank] booking.com
    [lintcode][美国大公司][1.字符串处理]
    [interview] Aug. 2015
    [codility] Lesson 2 Counting Elements
    [codility] Lesson 1 Time Complexity
  • 原文地址:https://www.cnblogs.com/superscfan/p/12257008.html
Copyright © 2020-2023  润新知