python3-函数的参数的四种简单用法:

 

def print_two(*args):

    arg1, arg2 = args
    print "arg1: %r, arg2: %r" % (arg1,arg2)
 
def print_two_again(arg1, arg2):
    print "arg1: %r, arg2: %r" % (arg1, arg2)
 
def print_one(arg1):
    print "arg1: %r" % arg1
 
def print_none():
    print "I got nothin"
 
print_two("Zed","Shaw")
print_two_again("Zed","Shaw")
print_one("First!")
print_none()

默认参数

看下面代码

1
2
3
4
5
6
7
8
9
10
def  stu_register(name,age,country,course):
     print ( "----注册学生信息------" )
     print ( "姓名:" ,name)
     print ( "age:" ,age)
     print ( "国籍:" ,country)
     print ( "课程:" ,course)
 
stu_register( "王山炮" , 22 , "CN" , "python_devops" )
stu_register( "张叫春" , 21 , "CN" , "linux" )
stu_register( "刘老根" , 25 , "CN" , "linux" )

发现 country 这个参数 基本都 是"CN", 就像我们在网站上注册用户,像国籍这种信息,你不填写,默认就会是 中国, 这就是通过默认参数实现的,把country变成默认参数非常简单

1
def  stu_register(name,age,course,country = "CN" ):

这样,这个参数在调用时不指定,那默认就是CN,指定了的话,就用你指定的值。

另外,你可能注意到了,在把country变成默认参数后,我同时把它的位置移到了最后面,为什么呢?  

关键参数

正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数,只需指定参数名即可,但记住一个要求就是,关键参数必须放在位置参数之后。

1
stu_register(age = 22 ,name = 'alex' ,course = "python" ,)

  

非固定参数

若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数

1
2
3
4
5
6
7
8
9
10
def  stu_register(name,age, * args):  # *args 会把多传入的参数变成一个元组形式
     print (name,age,args)
 
stu_register( "Alex" , 22 )
#输出
#Alex 22 () #后面这个()就是args,只是因为没传值,所以为空
 
stu_register( "Jack" , 32 , "CN" , "Python" )
#输出
# Jack 32 ('CN', 'Python')

还可以有一个**kwargs

1
2
3
4
5
6
7
8
9
10
def  stu_register(name,age, * args, * * kwargs):  # *kwargs 会把多传入的参数变成一个dict形式
     print (name,age,args,kwargs)
 
stu_register( "Alex" , 22 )
#输出
#Alex 22 () {}#后面这个{}就是kwargs,只是因为没传值,所以为空
 
stu_register( "Jack" , 32 , "CN" , "Python" ,sex = "Male" ,province = "ShanDong" )
#输出
# Jack 32 ('CN', 'Python') {'province': 'ShanDong', 'sex': 'Male'}

 

局部变量  
1
2
3
4
5
6
7
8
9
10
11
name  =  "Alex Li"
 
def  change_name(name):
     print ( "before change:" ,name)
     name  =  "金角大王,一个有Tesla的男人"
     print ( "after change" , name)
 
 
change_name(name)
 
print ( "在外面看看name改了么?" ,name)

输出

1
2
3
before change: Alex Li
after change 金角大王,一个有Tesla的男人
在外面看看name改了么? Alex Li

 

全局与局部变量

在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

转载于:https://www.cnblogs.com/AaronFan/p/6110883.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值