!/usr/bin/env python
-- coding: utf-8 --
@Time : 2020/4/1 10:07
@Author : 王小白——函数
@File : 10_06_function.py
Python内置函数
例:print input len type str int float list range pop append insert keys aplit replace strip remove clear
函数特点总结:可以重复使用
函数语法【def关键字】
函数调用:函数名()
例:
def da_lao():
print("woshidalao")
da_lao() #函数调用
例:带参数——形参/位置参数。。实际参数。。
def da_lao(name):#形参/位置参数
print("{0}shidalao".format(name))
da_lao("解决") #函数调用、实际参数
例:带参数
def da_lao1(name="默认"):#默认参数 默认参数必须放在位置参数后面
print("{0}shidalao".format(name))
da_lao1("ss") #函数调用,传值就取代默认参数
da_lao1()#函数调用,不传值适用默认参数
函数使用:
第一步、先用代码实现功能 还可以选取一组数据来证明自己的代码是否正确
第二步:变成函数 加def
第三步:想办法提高代码的复用性
例:请把1-100的整数相加功能 写成一个函数
def sum(m,n,k=1):
sum=0
for item in range(m,n,k):
sum+=item
print(sum)
sum(1,101)
sum(1,11,1)# 默认情况下 是按顺序赋值
sum(m=1,k=10,n=2) # 指定了参数的值,不按顺序
return函数
当你调用函数时,就会返回一个值 return后面的表达式
在函数里面相当于一个结束符号,表示函数到此为止;后面的代码不会被执行
return不能脱离函数
例:
def sum(m,n,k=1):
sum=0
for item in range(m,n,k):
sum+=item
return sum
result=sum(1,101)
print(result)
例:写函数,检查传入列表的长度,如果大于2,那么仅仅保留前两个长度的内容,并将新内容返回
a=[1,0.01,'hello',[1,2,3],True]
def check_list(li):
if len(li) >2:
return li[0:2]
m=check_list(a)
print(m)
动态参数(不定长参数)
1、当不确定传几个参数时 *变量【必须加一个星号】
2、在函数内部作为元组来传递
def make_sandwich(*args):
print(args)
all=""
for item in args:
all+=item
print(all)
make_sandwich("鸡蛋","生菜","肉")
关键字参数
1、 key-value **kwargs 【必须加两个星号】
2、在函数中体现为字典
def kw_function(**a):
print(a)
kw_function(x=1,y=2)
def add_all_num(**num):
sum=0
for item in num:
sum+=num[item]
print(sum)
add_all_num(a=1,b=2,c=2)
变量作用域
a=1 #全局变量
def add(b):
a=5 #局部变量
global c#声明这是一个全局变量
c=6 #赋值运算
print(a+b)
add(10)
print(a)
print(c)
全局变量 局部变量
1、作用范围不一样 全局:整个模块里面都能调用 函数的局部变量只能用于函数
2、当全局和局部变量同名且同时存在的时候,函数优先调用局部变量
3、当局部变量没有 就优先用全局的
4、global可以声明一个全局变量