zoukankan      html  css  js  c++  java
  • python-day3-之函数

    不使用函数的情况下只能遵循面向过程的编程,即,根据业务逻辑从上到下实现功能,往往重复的功能,使得代码出现重复。

    1 #最简单的函数调用
    2 #由于python遵循从上到下读入内存的规律,所以函数要放到调用的前面
    3 def s1():
    4     print('hello world')
    5 s1()
    #显示:hello world
    #函数的参数传入
    def s1(name):
        print('my name is %s'%name)
    
    s1('liguangxu')
    #显示:my name is liguangxu
    #函数的多参数调用(实参与形参相对应)
    def s1(name,age,what):
        print('my name is %s,age is %s, is %s'%(name,age,what))
    s1('liguangxu',23,'good man')
    #显示:my name is liguangxu,age is 23, is good man
    #函数的不同位置实参的传入(需要给实参指定对应形参)
    def s1(name,age,what):
        print('my name is %s,age is %s, is %s'%(name,age,what))
    
    s1(age=18,what='good man',name='liguangxu')
    #显示:my name is liguangxu,age is 18, is good man
    #函数形参的默认值(含有默认值的形参必须放在最后)
    def s1(name,age,what='good man'):
        print('my name is %s,age is %s, is %s'%(name,age,what))
    
    s1(age=18,name='liguangxu')
    #显示:my name is liguangxu,age is 18, is good man
    
    s1(age=18,what='bad man',name='liguangxu')
    #显示:s1(age=18,what='bad man',name='liguangxu')
    #函数的动态参数,会将实参放入元组中
    def test(*args):
        print(args,type(args))
    
    test('123')
    #显示('123',) <class 'tuple'>
    
    #函数的动态参数,传入的实参为一组元素,将li整个列表放入元组中
    def test(*args):
        print(args,type(args))
    
    li=[11,22,33,45]
    test(li)
    #显示([11, 22, 33, 45],) <class 'tuple'>
    
    #传入带一个*的列表,将li列表中的每个元素放到元组中
    def test(*args):
        print(args,type(args))
    
    li=[11,22,33,45]
    test(*li)
    #显示:(11, 22, 33, 45) <class 'tuple'> 
    test(*'alex')
    #显示:('a', 'l', 'e', 'x') <class 'tuple'>
    #总结:实参前加个‘*’相当于加了个for循环遍历实参的每个元素,并一一放入元组中
    #动态参数形参含两个*,将键值对传入,并保存成字典的形式
    def f2(**kwargs):
        print(kwargs)
    
    f2(n1='alex',n2=18)
    #显示:{'n1': 'alex', 'n2': 18}
    
    dic={'k1':'v1','k2':'v2'}
    f2(kk=dic)#{'kk': {'k1': 'v1', 'k2': 'v2'}}
    #显示{'kk': {'k1': 'v1', 'k2': 'v2'}}
    
    #万能参数
    def f1(*args,**kwargs):
        print(args)
        print(kwargs)
    f1(11,22,33,44,55,k1='aa',k2='bb')
    #运行结果(11, 22, 33, 44, 55) 
                  {'k1': 'aa', 'k2': 'bb'}            
    #formate传参方式
    #方式1    
    s1='i am {0},age{1}'.format('alex',18)
    print(s1)
    #显示:i am alex,age18
    
    #方式2
    s2='i am {0},age{1}'.format(*['alex',18])#传列表
    print(s2)
    #显示i am alex,age18
    
    #方式3
    s1='i am {name}, age{age}'.format(name='alex',age=18)#字符串中name与age后面一定要加上name=‘’,age=进行指定
    print(s1)
    #显示:i am alex, age18
    
    #方式4
    dic={'name':'alex','age':18}
    s2='i am {name},age{age}'.format(**dic)#传字典要加**
    print(s2)
    #显示:i am alex,age18
    #传过来的形参可使用方法不能重新赋值 ,建议全局变量名需大写
    #传的是引用 不是复制
    def f5(a1):
        a1.append('123')
    li=[11,22,33,44]
    f5(li)
    #显示:[11, 22, 33, 44, '123']
    1 #全局变量,所有的作用域,都可读,对全局变量进行【重新赋值】,需要加上global,特殊:列表,字典,可修改,不可重新赋值
    2 def f1():
    3     global name#表示name为全局变量
    4     name='123'
    5     print(name)
    6 
    7 name='456'
    8 f1()
    9 #显示:123
  • 相关阅读:
    Lambda表达式效率问题
    设计模式之代理模式
    spring学习之AOP
    jq 中input为radio设置选中状态,attr问题
    css 清除float浮动方法整理
    jquery.ready可以在文档加载后尽快执行对文档的操作
    前端学习网址整理
    图片缓存未触发onload
    spring mvc 下,ajax调用后台controller方法时报415 (Unsupported Media Type)错误
    nodejs向前台send数据时Date类型数据格式问题
  • 原文地址:https://www.cnblogs.com/liguangxu/p/5518365.html
Copyright © 2011-2022 走看看