python之路——函数(初识)

函数:

函数的定义与调用:

#函数定义
def my_len():
    """计算s1的长度"""
    s1 = "hello world"
    length = 0
    for i in s1:
        length = length+1
    print(length)

#函数调用  
my_len()

1. def 关键字,定义函数,加空格,函数名(变量)。

2. 函数名+(),就要执行此函数。

3. 函数是以功能为导向,函数内部尽量不要有 print。

1, 函数的返回值:

return

return 

函数当中遇到 return程序就会终止,并且也就结束了。

1, 不写 return 返回 None

def daxiao():
    if 1 > 0:
        return
print(daxiao())

2,return None 返回 None

def daxiao():
    if 1 > 0:
        return None
print(daxiao())

3, 单个值,返回此单值

def fanc():
    if 1 > 0:
        return'ghg'
print(fanc())

4, 将多个值包在元祖中,返回给调用者次元组

def fanc():
    if 1 > 0:
        return 1,2,3,111,222
print(fanc())

2, 函数的参数

1, 传参: 传参的形式有 形参(形式参数),实参(实际参数)。

1.1 从实参的角度:

① 按位置传参

def my_max(x,y):
    z = x  if x > y else y
    return z
r = my_max(10,20)
print(r)

② 按关键字传参

def my_daxiao(x,y):
    z = x if x > y else y
    return z

r = my_daxiao(x = 20,y = 10)
print(r)

③ 混合传参  关键字参数永远在参数后面

def my_daxiao(a,b,x,y):
    print(x,y,a,b)
    z = x if x > y else y
    return  z
r = my_daxiao(1,2,x = 20,y = 10)
print(r)

1.2 从形参的角度

① 位置参数

  位置参数必须传值

def my_daxiao(a,b,x,y):
    print(x,y,a,b)
    z = x if x > y else y
    return  z
#调用 my_daxiao不传递参数
r = my_daxiao()
print(r)

②默认参数

def stu_info(name,sex = "male"):
    """打印学生信息函数,由于班中大部分学生都是男生,
        所以设置默认参数sex的默认值为'male'
    """
    print(name,sex)


stu_info('alex')
stu_info('eva','female')

默认参数

 3, 动态参数(形参)

位置参数

3.1 *args(包含在元祖所有的位置参数)

def fuce(*arge):
    print(arge)
fuce(1,2,3,'alex',4,5)

3.2 **kwargs (包含在字典中的所有关键字参数)

def func(**kwargs):
    print(kwargs)
func(a = 1,b = 3, c = 5)
*arge 和 **kwargs 组合
def
func(a,b,c,*args,**kwargs): print(a) print(b) print(c) print(args) print(kwargs) func(1,3,5,6,'alex','taibai',x = 2,y = 1,z = 0)

万能参数:

def func(*args,**kwargs):
    print(args)
    print(kwargs)
func(1,2,3,4,name = 'lzg',sex = 'man')

魔法运算:打散

def func(*args,**kwargs):
    print(args)
l1 = [1,2,3,4,5]
l2 = {'a':1,'b':2}
func(*l1,*l2,)

4, 名称空间(命名空间),局部 全部:

名称空间分三种:

1, 全局名称空间

2, 局部名称空间

3, 内置名称空间

加载顺序:

内置命名空间 ——>全局名称空间 ——>局部名称空间

(函数调用时可用到局部名称空间)

取值顺序:

       在局部调用:局部命名空间->全局命名空间->内置命名空间

  在全局调用:全局命名空间->内置命名空间

作用域:按照生效范可以分为全局作用域和局部作用域。

全局作用域包含:全局名称空间,内置名称空间

局部作用域包含:局部名称空间

5,global(全局变量),nonlocal(局部变量)关键字

global:

1, 声明一个全局变量。

2,引用全局变量,并改变(限于字符串,数字)。

第一种情况:
def
func(): global a a = 2 func() print(a)
第二种情况: count
= 1 def func(): global count a = 2 func() print(a)

nonlocal:

1, 不能修改全局变量

2,在局部作用域中,对父级作用域(或者更外层作用域非全局作用域)的变量进行引用和修改,并且引用的哪层,从那层及以下此变量全部发生改变。

def add_b():
#     b = 42
#     def do_global():
#         b = 10
#         print(b)
#         def dd_nonlocal():
#             nonlocal b
#             b = b + 20
#             print(b)
#         dd_nonlocal()
#         print(b)
#     do_global()
#     print(b)
# add_b()
View Code
 
函数的嵌套:
def fun2():
    print(222)
    def fun3():
        print(666)
    fun3()
fun2()
print(111)
# def fun2():
#     print(222)
#     def fun3():
#         print(666)
#     print(444)
#     fun3()
#     print(888)
# print(333)
# fun2()
# print(555)
View Code

 

 

---恢复内容结束---

原文地址:https://www.cnblogs.com/lzg-lzg/p/8393893.html