码迷,mamicode.com
首页 > 编程语言 > 详细

python之函数

时间:2016-05-23 00:58:16      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:

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

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

 

python之函数

标签:

原文地址:http://www.cnblogs.com/liguangxu/p/5518365.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!