zoukankan      html  css  js  c++  java
  • Python学习---基础函数的学习

    1.1. 基础函数

    函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可.

    灌输一个概念:Python中函数就是对象,函数和我们之前的[1,2,3],'abc',8等一样都是对象,而且函数是最高级的对象(对象是类的实例化,可以调用相应的方法,函数是包含变量对象的对象)

    既然函数是对象,那么自然满足下面两个条件:

    1. 其可以被赋给其他变量

    2. 其可以被定义在另外一个函数内(作为参数&作为返回值),类似于整形,字符串等对象。

    f和f()的区别是: f是函数名,是一个变量,可以进行赋值操作里面存储量函数的内容

                             f():是真正的去操作这个函数,去执行函数存储的内容

    image

    特性:

    1.代码重用

    2.保持一致性

    3.可扩展性

    函数名的命名规则

    1.函数名必须以下划线或字母开头,可以包含任意字母、数字或下划线的组合。不能使用任何的标点符号;

    2.函数名是区分大小写的。

    3.函数名不能是保留字

    形参:形式参数,不是实际存在,是虚拟变量。

            在定义函数和函数体的时候使用形参,目的是在函数调用时接收实参(实参个数,类型应与实参一一对应)

    实参实际参数,调用函数时传给函数的参数,可以是常量,变量,表达式,函数,传给形参

    区别:形参是虚拟的,不占用内存空间,.形参变量只有在被调用时才分配内存单元,实参是一个变量,占用内存空间,数据传送单向,实参传给形参,不能形参传给实参

    简单的函数实例

    简单的函数实例: 形参,实参, 函数之间的调用,return语句, 文件的操作

    import time
    def now():
        format_time = '%y-%m-%d %X'
        current_time = time.strftime(format_time)
        return current_time
    def logger(n):
        with open('log.txt', 'a+', encoding='utf-8') as f:
            f.write("%s:%s
    " % (n, now()))
    def say():
        line = "现在是北京时间"
        logger(line)
    say()
    image

    特殊例子:

    def f(){
        global a
        a = 12
    }
    print(a)    # 直接打印报错,因为a虽然是全局变量,但是在内存中的只有函数名,函数的内容未执行
    f()
    print(a)    # 函数被调用,函数内的全局a变量被赋值了

    函数的参数

    必备参数  ('hhh', 23)

    关键字参数 (name='hhh',age=23)  (age=23, name='hhh')

    默认参数 :默认参数在形参中添加,Py3.0中默认参数一定要跟在其他参数后面,否则会报错

    不定长参数:

    *args: 未命名式形参,传递过去元组处理

          **keywords 命名式形参,传递过去一个键值对,用dict形式

    不定长参数位置:def f(school='xupt', *args, **kwargs): 默认参数在最左边,*args在中间,**keywords在右边,否则报错 

    必备参数,关键字参数,默认参数

    默认参数

    # 默认参数一定要跟在其他参数后面
    def info(name='ftl', age=18, sex='male'):
        print('name:%s' % name)
        print('age :%d' % age)
        print('sex :%s' % sex)
        print('----------------------------------------')
    info("hhh", 23)
    info(age=23, name='hhh')
    # 使用默认参数
    info()
    info('hahaha')

    image

    不定长参数:

    *rags, 无命名参数,传递过去的是一个元组

    **keywords, 命名式参数

    不定长参数位置:def f(*args, **keywords)  args在左边,keywords在右边,否则报错

    *rags, 无命名参数

    def add(*args):
        print(args)
        print(sum(args))
    
    add(1, 2, 3, 4, 5)

    image

    说明:# args的特殊用法:

    def fun(*args):
        print(args)
    fun([1, 3, 5], [2, 4, 6])
    fun(*[1, 3, 5], [2, 4, 6])
    fun(*[1, 3, 5], *[2, 4, 6])
    

    image

    **keywords, 命名式参数

    def info2(**kwargs):
        for i in kwargs:
            print(i, kwargs[i])
    
    
    info2(name='ftl', age=23, sex='male')
    image

    说明: # kwargs的特殊用法:

    def fun1(**kwargs):
        print(kwargs)
    # fun1({'name':'ftl'})  # 因为传递过去的不是一个键值对TypeError: fun1() takes 0 positional arguments but 1 was given
    fun1(info={'name' : 'ftl'})  # 传递过去的key是info, value是一个字典
    fun1(name='ftl', age=12, sex='male')
    fun1(**{'name': 'ftl', 'age': 12, 'sex': 'male'})

    image

     

    不定长参数的混合使用,默认参数必须在最左边,因为不定长参数可为空,感觉混合使用的时候,是按照位置传递的参数

    def info3(school='xupt', *args, **kwargs): 
        # print(args)    # (1, 2, 3)
        # print(kwargs)  # {'age': 23, 'name': 'ftl', 'sex': 'male'}
        for k in args:
            print(k, end='	')
        print()
        for i in kwargs:
            print('%s --> %s' % (i, kwargs[i]))
    info3(1, 2, 3, name='ftl', age=23, sex='male')
    # SyntaxError: positional argument follows keyword argument
    # info3(name='ftl', age=23, sex='male',1, 2, 3)  # 位置错误
    # def info4(**kwargs, *args):                   # 位置错误,Py3不支持这种做法
    image
  • 相关阅读:
    Win7下IE 8内存保护可能导致ActiveX无法安装的问题及其解决方法
    为Windows Server 2000开发和部署ASP.NET 3.5的应用程序
    MOSS 2010:如何为列表设计Infopath表单用于编辑和显示
    Windows Live is designed for you, but maybe not for your browser
    Meet the new WSS SharePoint Foundation 2010
    MOSS 2010: Visual Studio 2010开发体验(3)——调试代码
    MOSS 2010:Visual Studio 2010开发体验(10)——列表开发之内容类型
    MOSS 2010:谁动了我的“共享服务”
    MOSS 2010:通过SharePoint Designer定制列表项的条件格式
    如何访问嵌套母版页中的控件
  • 原文地址:https://www.cnblogs.com/ftl1012/p/9382484.html
Copyright © 2011-2022 走看看