day9__基础(函数基础)

一 初识函数

函数的优势:

1,减少代码的重复性。

2,使代码可读性更好。

def date():
    print("拿出手机")
    print("打开陌陌")
    print('左滑一下')
    print('右滑一下')
    print("找个漂亮的妹子")
    print("问她,约不约啊!")
    print("ok 走起")


date()  # 调用函数

二. 函数的结构与调用

  • 函数的结构:
def 函数名():
	函数体

def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。

def 是固定的,不能变,他就是定义函数的关键字。

空格 为了将def关键字和函数名分开,必须空(四声),当然你可以空2格、3格或者你想空多少都行,但正常人还是空1格。

函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并且要具有可描述性

函数体:缩进,函数中尽量不要出现print

括号:是必须加的

def date():
    print("拿出手机")
    print("打开陌陌")
    print('左滑一下')
    print('右滑一下')
    print("找个漂亮的妹子")
    print("问她,约不约啊!")
    print("ok 走起")
  • 函数的调用

    s1=[1,2,3,4,5]
    s2='sdfsdfsdfdsf'
    def a(s):
        count = 0
        for i in s:
            count+=1
        print(count)
    
    a(s2)
    

三. 函数的返回值

一个函数就是封装一个功能,这个功能一般都会有一个最终结果的,比如你写一个登录函数,最终登录成功与否是不是需要返回你一个结果?还有咱们是不是都用过len这个函数,他是获取一个对象的元素的总个数,最终肯定会返回一个元素个数这样的结果:

用到python中的一个关键字:return

在函数中遇到return直接结整函数

retuen有两个功能:

  • 结束函数不在继续执行
  • 会给函数执行者返回值

1)函数中遇到return,此函数结束.不在继续执行

def date():
    print("拿出手机")
    print("打开陌陌")
    return
    print('左滑一下')
    print('右滑一下')
    print("找个漂亮的妹子")
    print("问她,约不约啊!")
    print("ok 走起")
date()

输出结果:
    拿出手机
    打开陌陌

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

def date():
    print("拿出手机")
    print("打开陌陌")
    print('左滑一下')
    print('右滑一下')
    print("找个漂亮的妹子")
    print("问她,约不约啊!")
    print("ok 走起")
    return '约会成功~!'
a = date()
print(a)
    输出结果:
    拿出手机
    打开陌陌
    左滑一下
    右滑一下
    找个漂亮的妹子
    问她,约不约啊!
    ok 走起
    约会成功~!    

如果返回多个值,是以元组的形式返回的。如下:

def date():
    print("拿出手机")
    print("打开陌陌")
    print('左滑一下')
    print('右滑一下')
    print("找个漂亮的妹子")
    print("问她,约不约啊!")
    print("ok 走起")
    return '约会成功~!','123','xxxxxx'
a = date()
print(a)
输出结果:
    拿出手机
    打开陌陌
    左滑一下
    右滑一下
    找个漂亮的妹子
    问她,约不约啊!
    ok 走起
    ('约会成功~!', '123', 'xxxxxx')

总结一下:

  1.终止函数,return下面的(函数内)的代码不会执行。

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

      可函数的执行者返回值

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

def date():
    print("拿出手机")
    print("打开陌陌")
    print('左滑一下')
    print('右滑一下')
    print("找个漂亮的妹子")
    print("问她,约不约啊!")
    print("ok 走起")
    return '漂亮的妹子','小萝莉', '成熟女性'
g1,g2,g3 = date()
print(g1, g2, g3)  # 漂亮的妹子 小萝莉 成熟女性

四. 函数的传参

将一些数据传到函数里面的,然后让里面的代码利用上这个数据产生我们想要的结果,在返回。

举个例子:

def date(sex):
    print("拿出手机")
    print("打开陌陌")
    print('设置筛选条件:性别: %s' %sex)
    print("找个漂亮的妹子")
    print("问她,约不约啊!")
    print("ok 走起")
	
date('女')

函数的参数可以从两个角度划分:

  • 形参

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

  • 实参

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

1、实参:
def date(sex):  # 函数定义时(参数) 这个就是形参
    print("拿出手机")
    print("打开陌陌")
    print('设置筛选条件:性别: %s' %sex)
    print("找个漂亮的妹子")
    print("问她,约不约啊!")
    print("ok 走起")

date('女')  # 函数执行时(参数) 这个就是实参
# 这个过程就是:代码运行到date('女')开始执行此函数同时将字符串'女'这个数据传递给变量sex,然后执行函数中的代 # 码。如果遇到sex,其实就是使用'女'这个数据。
1)实参角度:
  • 位置参数

位置参数就是从左至右,实参与形参一一对应。

def date(sex, age, hobby):
    print("拿出手机")
    print("打开陌陌")
    print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby))
    print("找个漂亮的妹子")
    print("问她,约不约啊!")
    print("ok 走起")
date('女','25~30','唱歌')

练习

编写函数,给函数传递两个参数a,b 比较a,b的大小 返回a,b中最大的那个数

def f(a,b):
    if a>b:
        return a
    else:
        return b
num_sum = f(5,8)
print(num_sum)
结果:8
  • 关键字参数 
def date(sex, age, hobby):
    print("拿出手机")
    print("打开陌陌")
    print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby))
    print("找个漂亮的妹子")
    print("问她,约不约啊!")
    print("ok 走起")
date(hobby='唱歌',sex='女',age='25~30',)
  • 混合参数

    def date(sex, age, hobby):
        print("拿出手机")
        print("打开陌陌")
        print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby))
        print("找个漂亮的妹子")
        print("问她,约不约啊!")
        print("ok 走起")
    date('女',hobby='唱歌',age='25~30',)
    

    混合参数, 位置参数必须在关键字参数前面

2)形参角度:

  • 位置参数

位置参数其实与实参角度的位置参数是一样的,就是按照位置从左至右,一一对应

def date(sex, age, hobby):
    print("拿出手机")
    print("打开陌陌")
    print('设置筛选条件:性别: %s,年龄:%s,爱好:%s' %(sex, age, hobby))
    print("找个漂亮的妹子")
    print("问她,约不约啊!")
    print("ok 走起")
date('女','25~30','唱歌')
  • 默认参数
def stu_info(name, age, sex='男'):   #sex='男'就是一个默认参数
    print("录入学生信息")
    print(name, age, sex)   
    print("录入完毕")
stu_info("张强", 18)

练习:

def date(osname,cpu_info,ram_info):
    print("====osname: %s ===="% osname )
    print("+  CPU: %s        +"% cpu_info)
    print('+  内存: %s        +'%  ram_info)
    print("==================")

osname = input('请输入系统名称:')
cpu_info= input('请输入CPU型号:')
ram_info=input('请输入内存大小:')
date(osname,cpu_info,ram_info)
输出结果:
    ====osname: Centos ====
    +  CPU: E52620        +
    +  内存: 128G        +
    ==================
def register(n,s,a,e):
    with open('aa.py',encoding='utf-8',mode='a') as f1:
        f1.write('{}|{}|{}|{}\n'.format(n,s,a,e))

while 1:
    name = input('请输入姓名:(Q或者q退出)')
    if name.upper()== 'Q':break
    sex = input('请输入性别')
    age = input('请输入年龄')
    edu =input('请输入学历')
    register(n=name,s=sex,a=age,e=edu)
posted @ 2020-06-25 00:44  MrXiong  阅读(61)  评论(0编辑  收藏