python学习day10

一、参数

1.参数基本知识

  • 任意个数
  • 任意类型

2.位置传参(调用函数并传入参数)

3.关键字传参(形参的名字可以直接调用)

#关键字传参和位置传参可以混合使用(位置传入的参数>关键字参数在后=总参数个数)

4.默认参数

# a2表示默认参数,可以不传

def (a1,a2=1): 

  pass

5.万能参数(打散)

  5.1.*args

  • *args可以接收任意参数,并将参数转换为元组。
    • 有*
    • 无*
# 可以传递任意参数
# *args

def func1(*args):
  print(args)
func1(1,2) #args = (1,2)
func1((1,2,3)) #args = ((1,2,3))
func1(*(1,2,3,4)) #args = (1,2,3,4)
  • 只能用位置传参

  5.2.**kwargs

  • 可以传递任意参数
    • 调用函数无**
    • 调用参数有**
# **kwargs
def func2(**kwargs):
print(kwargs)
func2(k1=2,k2='wo')

def func2(**kwargs):
print(kwargs)
func2(**{'k1': 2, 'k2': 'wo'})

  5.3综合应用

# 综合
def fun(*args,**kwargs):
print(args,kwargs)

6.参数相关重点

def fun(a1,a2):

  pass

def fun(a1,a2=2):

  pass

def fun(*args,**kwargs):

  pass

二、作用域

  • 一个函数才是一个作用域
  • 作用域中查找数据规则:优先在自己的作用域找数据,自己没有就去‘父级‘-->‘父级‘-->直到全局,全局没有就报错。注意:父级作用域中的值到底是什么?
  • 子作用域中查找(练习)
  • 子作用域中只能找到父级中的值,默认无法重新为父级的变量重新赋值
  • 如果非要对全局变量进行赋值,可以使用global(只应用于全局变量改写)
name ='chendian'
def fun():
global name
name ='alex'
fun()
print(name) #输出为alex
  • nonlocal对父级变量进行赋值
name ='chendian'
def fun():
# global name
name ='alex'
def fun1():
nonlocal name
name ='wo'
print(name)
fun1()
print(name)
fun()
print(name) #输出为alex
  • 建议全局变量全部为大写
posted @ 2019-11-28 18:16  沉淀xy  阅读(104)  评论(0)    收藏  举报