python之函数初始

案例一
s='dhclvamvmzkfisncnmlwq'
count=0
for i in s:
    count+=1
print(count) #21
案例二
l=[1,2,3,4]
count=0
for i in l:
    count+=1
print(count) #4

 函数的使用必须遵循一个原则:先定义后调用

 

1. def 关键字  函数名:
def 函数名():
  函数体
def my_len():
    #函数体
    l=[1,2,3,4]
    count=0
    for i in l:
        count+=1
    print(count) #4
my_len()  #执行函数 ,函数名()
函数体:就是函数被执行之后要执行的代码
函数的优点:(1)减少代码的重复率。

      (2)增强代码的阅读性
2.函数的到底是什么
函数:对代码块和功能的封装和定义
s='asdfghjklmnbvcxz'
print(len(s)) #16

def my_len():
    #函数体
    s = 'dhclvamvmzkfisncnmlwq'
    count=0
    for i in s:
        count+=1
    print(count)
my_len()#21
函数的调用过程:

3.函数的返回值 return

1).函数中如果遇到return,则直接结束函数
2).给函数的执行者返回值。
return None
def func1():
    print(111)
    print(222)
    return
    print(333)
func1() #111 222  func1()整体是函数的执行者

 

3)return 单个值       原封不动的返回
def func1():
    a=1
    b=2
    c=a+b
    d='alex'
    e=[1,2,3]
    return e
ret=func1()
print(ret,type(ret)) #[1, 2, 3] <class 'list'>
4)return 多个值    返回一个元组,所有的返回值作为元组的每一个元素
def func1():
    a=1
    b=2
    c=a+b
    d='alex'
    e=[1,2,3]
    return c,d,e
ret=func1()
print(ret,type(ret)) #(3, 'alex', [1, 2, 3]) <class 'tuple'>
工作中,函数中尽量不要出现print
def my_len():
    #函数体
    s='asncmxzloeruty'
    count=0
    for i in s:
        count+=1
    return count
print(my_len()) #14

总结一下:


  1.遇到return,函数结束,return下面的(函数内)的代码不会执行。


  2.return 会给函数的执行者返回值。


      如果return后面什么都不写,或者函数中没有return,则返回的结果是None


      如果return后面写了一个值,返回给调用者这个值


      如果return后面写了多个结果,,返回给调用者一个tuple(元组),调用者可以直接使用元组的解构获取多个变量。


4.函数的参数
参数,函数在调用的时候指定具体的一个变量的值.就是参数.语法:
def 函数名(参数列表):
  函数体

1.形参


 写在函数声明的位置的变量叫形参,形式上的一个完整.表示这个函数需要xxx


2.实参


  在函数调用的时候给函数传递的值.加实参,实际执行的时候给函数传递的信息.表示给函数xxx

3.传参


 函数的传参就是函数将实际参数交给形式参数的过程.


(1)实参

l1=[1,2,3]
s='asncmxzloeruty'
def my_len(argv): #argv形式参数
    #函数体
    count=0
    for i in argv:
        count+=1
    return count
print(my_len(l1)) #3   my_len(l1)函数的执行者(实参),实际的参数

1)位置参数,必须要按顺序一一对应
def fun1(x,y):
    print(x,y)
fun1(1,2) #1 2
习题:2个函数:一个函数求和;另一个函数将大的数给我返回
a.函数的求和
def sum1(x,y):
    return  x+y
a=3
b=6
print(sum1(a,b)) #9
b.将大的返回
def compare(x,y):
    if x>y:
        return x
    else:
        return y
print(compare(100,101)) #101

 

c.三元运算:只针对于简单的if else这样的结构,才可以使用
def compare(x,y):
    # if x>y:
    #     return x
    # else:
    #     return y
    # ret=x if x>y else y
    # return  ret
    return  x if x>y else y
print(compare(100,101))

  

2)关键字传参,可以不按照顺序,但是必须一一对应
def fun1(x,y):
    return x+y
print(fun1(y=100,x=99)) #199

3)混合传参:关键字参数一定要在位置参数后面
def fun1(a,b,n,x,y):
    return x+y
name='alex'
print(fun1(100,200,name,y=100,x=99)) #199
(2)形参角度:
1).位置参数,位置参数其实与实参角度的位置参数是一样的,就是按照位置从左至右,一一对应
2).关键字参数,一一对应
def date(sex, age, hobby):
    print("拿出手机")
    print("打开陌陌")
    print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby))
    print("找个漂亮的妹子")
    print("问她,约不约啊!")
    print("ok 走起")
date('女','25~30','唱歌')
习题:
写一个函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者

  

def func(arg):
    if len(arg) > 2:
        return arg[0], arg[1]


print(func([1, 2, 3, 4]))
print(func([1, 2]))

  

3)默认值参数
默认参数设置的意义:普遍经常使用的
def stu_info(name, age, sex='男'):
    print("录入员工信息")
    print(name, age, sex)
    print("录入完毕")
stu_info("张飞", 22)

  



posted @ 2020-05-31 20:56  菜鸟鸭  阅读(231)  评论(0编辑  收藏  举报