day10-函数基础

1.函数的声明

1)什么是函数

函数就是对实现某一特定功能的代码的封装

2)函数的分类

按照函数是谁来声明的将函数分为系统函数和自定义函数

  • 系统函数:由系统声明,程序员直接使用的函数。例如:print/input/hex/length/sum/max/min等
  • 自定义函数:由程序员自己声明的函数

3)函数的声明(定义)

a.语法:

def 函数名(参数列表):
函数说明文档
函数体

b.说明

def - python声明函数的关键字,固定写法
函数名 - 程序员自己命名;
要求:是标识符,不能是关键字
规范:PEP命名规范;见名知义(看到函数名大概知道函数的功能);不能使用系统函数名或者类名
() - 固定写法
参数列表 - 这儿的参数叫形参;以'变量名1,变量名2,...'的形式存在
它的作用是将函数外面的数据传递到函数里面
: - 固定写法
函数说明文档 - 使用三个双引号引起来的文本信息
函数体 - 和def保持一个缩进的一条或者多条语句。就是实现函数功能的代码段

c.初学者声明函数的步骤

1.确定函数功能
2.根据功能确定函数名
3.确定函数的参数;看实现函数的功能需不需要额外的数据,需要几个
4.实现函数的功能
5.写函数说明文档

d.注意:函数在声明的时候不会执行函数体,调用的时候才会执行(重要!)

写一个函数,求两个数的和

def ysy_sum(num1, num2):
    """
    功能说明:求两个数的和
    :param num1: 参数说明  - 数字
    :param num2: 参数说明  - 数字
    :return: 返回和的值
    """
    sum1 = num1 + num2
    return sum1


print(ysy_sum(1, 2))

练习:写一个函数,打印指定字符串中所有的中文字符

def c_char(str1):
    """
    功能说明:求指定字符串中所有的中文字符
    :param str1: 指定的字符串
    :return: 返回一个包含所有中文的新的字符串
    """
    str2 = ''
    for chars in str1:
        if '\u4e00' <= chars <= '\u9fa5':
            str2 += chars
    return str2


print(c_char('as12哈哈9你好1q'))

4)函数的调用

a.语法

函数(实参列表)

b.说明

函数名 - 已经声明过的函数名
() - 固定写法
实参列表 - 以‘值1,值2,值3,...’的形式存在;实参是用来给形参赋值的

c.注意:同一个函数可以调用多次

2.函数的调用

1)函数的调用过程

1)回到函数声明的位置
2)用实参给形参赋值(传参);传参的时候要保证每个参数都有值
3)执行函数体
4)确定函数的返回值
5)回到函数调用的位置,接着往后执行。

def ysy_sum(num1, num2):
    # num1 = 1, num2 = 2
    print(num1 + num2)


ysy_sum(1, 2)

3.函数的参数

1)参数分类

1.位置参数和关键字参数(实参分类)

a.位置参数:让实参和形参一一对应,来给不同的形参赋不同的值
b.关键字参数:以'参数名1=值1,参数名2=值2,...'的形式来传参
注意:1.如果位置参数和关键字参数同时存在的时候,位置参数必须放在关键字参数的前面
2.如果希望跳过前面某个、某几个参数,直接给后面的参数赋值,就必须使用关键字参数

def func1(x, y, z):
    print(x, y, z)


# 位置参数
func1(1, 2, 3)

# 关键字参数
func1(x=1, y=1, z=1)
func1(y=2, x=1, z=3)

# 位置参数+关键字参数
func1(3, z=2, y=1)

2.参数默认值 - 形参

声明函数的时候,可以给形参赋默认值;已经有默认值的参数在调用的时候可以不用传参

注意:没有默认值的参数必须放在有默认值参数的前面

def func2(x, y=2, z=1):
    print(x, y, z)


func2(1, z=2)

3.参数类型说明

a.给参数设置默认值,默认值的类型就是参数类型
b.形参:类型名

4.不定长参数 - 参数个数不确定

a.在参数名前加,那么这个参数就会变成一个元组去接收多个参数,调用的时候不能使用关键字参数传参
b.在参数名前加
*,那么这个参数就会变成一个字典去接收多个参数,调用的时候只能使用关键字参数传参

# 计算多个数的和
def ysy_sum(*num):
    print(sum(num))


ysy_sum(1, 2, 3)


def func5(x, *y):
    print(x)
    print(y)


func5('ab', 1, '1s')


def func6(**num):
    print(num)


func6()
# func6(1)    # TypeError: func6() takes 0 positional arguments but 1 was given
func6(x=10)
func6(x=1, y=2)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容

  • 前言回顾 1.函数的定义:函数就是对实现某一特定功能的代码块的封装2.函数的声明: def 函数名(形参列表):函...
    不语sun阅读 177评论 0 0
  • """author = 陈俊龙""" ============函数的返回值============== 1.什么是...
    陈俊龙1995阅读 129评论 0 0
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,550评论 0 5
  • 一、函数的返回值 返回值就是函数返回给函数调用者的值(概念) 返回值就是return后面的值(语法) 返回值就是函...
    毋望阅读 104评论 0 0
  • 第5章 函数和函数式编程 5.1 引言函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数...
    VIVAFT阅读 950评论 0 5