Python学习笔记-Day9

内容大纲:
一、函数初识

二、函数的返回值

三、函数的传参

一、函数初识

1、什么是函数 :

函数是组织好的,可重复使用的,用来实现单一、或相关联功能的代码,函数能提高应用的模块性和代码的重复利用率。

函数的优点:减少代码重复率,增强代码阅读性

函数的主要目的:封装一个功能

2、函数的定义和调用

#函数的定义
def my_len():
    '''计算s1的长度'''
    s = 'dahjd'
    length = 0
    for i in s:
        length += 1
    print(length)
#函数的调用
my_len()

定义:

def:关键字开头,空格之后接函数名称和括号,最后还有一个' : '

空格:为了将def关键字和函数名隔开

函数名:函数名只能包含数字、字符串和下划线组成,不能以数字开头,和变量名的组成方式相同

括号:必须加

注释:每一个函数都应该对功能和参数进行说明

调用:

就是函数名(),一定要加括号。函数的执行者

二、函数的返回值return

1、函数中如果遇到return则直接结束函数

def func1():
    print(111)
    print(222)
    return
    print(333)

func1()
结果是:
111
222

2、给函数的执行者返回值

①没有返回值:返回给函数执行者None

def func1():
    a = 1
    b = 2
    return

print(func1())

执行结果:None

②返回一个值:return单个值,将该值原封不动的返回

def func1():
    a = 1
    b = 2
    return a
print(func1())
执行结果:
1

③返回多个值:return多个值,返回元组类型,返回值作为元组中的元素

def func1():
    a = 1
    b = 2
    c = 'hello'
    d = [1,2,3]
    return a,b,c,d
print(func1())
执行结果:(
1, 2, 'hello', [1, 2, 3])

三、函数的传参

1、实参:在函数执行者里面的参数叫实参

①位置参数:按顺序和形参一一对应

def compare(x,y):
    ret = x if x > y else y   #三元运算,针对简单的if else才能使用
    return ret

print(compare(123,122334))
执行结果:
122334

②关键字参数:可以不按顺序,但是必须一一对应

def compare(x,y):
    ret = x if x > y else y
    return ret

print(compare(y=13,x=1))

执行结果:13

③混合参数:关键字参数一定要在位置参数后面

def func1(a,b,c,x,y):
    a = 1
    b = 'hello'
    return a,b,c,x,y
name = 'tt'
print(func1(1,2,name,y=10,x=20))

执行结果:
(1, 'hello', 'tt', 20, 10)

2、形参:

①位置参数:按顺序和实参一一对应,位置参数必须传值

②默认参数:给其传值,默认参数覆盖,不传值,不报错,使用默认参数

def name_list(name,sex = 'male'):
    '''将姓名/性别写入文件'''
    with open('namelist',encoding='utf-8',mode='a') as f1:
        f1.write('{}	/{}
'.format(name,sex))

while 1:
    name,sex = input('请输入姓名/性别,以“、”隔开:').strip().replace('',',').split(',')
    if sex.strip():  #当性别不为空时即有输入性别时,默认参数被覆盖
        name_list(name,sex)
    else:
        name_list(name) #当没有输入性别时,使用默认参数

③动态参数:不定长传参,在需要传递的参数很多不定长的情况下,就用*args、**kwargs接收。

args是元组形式,接收除键值对以外的所有参数,kwargs只接收键值对的参数,并保存在字典中。

def trans_para(*args,**kwargs):
    print(args,type(args))
    print(kwargs,type(kwargs))

trans_para(1,'hello',[1,2,3],{'name':'weng'},name = 'weng')   #键值对一定要在最后

执行结果:
(1, 'hello', [1, 2, 3], {'name': 'weng'}) <class 'tuple'>
{'name': 'weng'} <class 'dict'>
原文地址:https://www.cnblogs.com/tian-tian/p/9482395.html