我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python3--函数初识

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python3--函数初识

比如python没有len()方法,如何求字符串长度,使用for循环

s = 'dadhhrqlasd'
count = 0
for i in s:
    count += 1
print(count)

执行输出

11


求列表呢?

l1 = [1, 2, 3, 4, 5, 'a', 'b', 'c', 'abc', 10]
count = 0
for j in l1:
    count += 1
print(count)

执行结果

10


通过上面两个例子,可以看出方法都是使用的同一个,但是重复代码多,可读性差

写代码

函数的产生:

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.

函数能提高应用的模块性,和代码的重复利用率。已经知道python提高了许多内建函数,比如print(),len()等。但你也可以自己创建函数,这被叫做用户自定义函数。

l1 = [1, 2, 3, 4, 5, 'a', 'b', 'c', 'abc', 10]
def my_len():
    # def关键字 定义一个函数
    # my_len函数名的书写规则与变量一样
    # def与函数名中间有一个空格(规定)
    # 函数名():加上冒号(将函数名与函数体隔开)
    # 函数体,就是函数里面的逻辑代码
    count = 0
    for j in l1:
        count += 1
    print(count)
# 执行函数
my_len()

输出结果

10


代码是从上向下执行的,在执行my_len()时,将my_len加载到内存中,中间逻辑不读,将代码打包一下,放到临时内存中,它不执行


函数的返回值

用len()方法时,得到的结果会赋值给一个变量,然后得到结果

print(len('hello,world'))

结果为: 11

但是之前写的函数,并不会得到这样的结果,如何让它和len函数一样,有返回值呢?

那就是在函数的最后加上一个return, return后面写你需要的返回值就可以了

例子

def my_len():
    """计算s1的长度"""
    s1 = 'hello world'
    count = 0
    for i in s1:
        count += 1
    return count
# 函数调用
print(my_len())

结果为11


下面研究下return关键字的作用

return关键字的作用

return是一个关键字,在pycharm里,你会看到它变成蓝色

这个词翻译过来就是返回的意思,所以我们写在return后面的值叫"返回值",要研究返回值,返回值有几种情况:分别是没有返回值,返回一个值,返回多个值


没有返回值

不写return的情况下,会默认返回一个None:

例子

def my_len():
    """计算s1的长度"""
    s1 = 'hello world'
    count = 0
    for i in s1:
        count += 1
    print(count)
# 函数调用
str_len = my_len()
# 因为没有返回值,此时的str_len为None
print(str_len)

只写return,后面不写其它内容,也会返回None,既然没有要返回的值,完全可以不写return,为什么还要写个return呢?,这就是return的其它用法,就是一旦遇到return,结束整个函数

例子

def tmp_demo():
    print(111)
    return
    print(222)
res = tmp_demo()
print(res)

结果为

111

None

return None:返回了一个None和上面的例子一样,只打印了前面的111,说明后面的222没有被执行


返回一个值

只需要在return后面写上要返回的内容即可

例子

# 函数定义
def my_len():
    """计算s1的长度"""
    s1 = 'hello world'
    count = 0
    for i in s1:
        count += 1
    return count
# 函数调用
print(my_len())

结果为:11


返回多个值,将多个值放到一个元组里,返回给函数的调用者

例子

def tmp_demo2():
    '''返回多个值'''
    return 1,['a','b'],2,3,4
print(tmp_demo2())

输出结果

(1, ['a', 'b'], 2, 3, 4)


函数的传参

def my_len(l): # l形式参数,形参
    count = 0
    for i in l:
        count += 1
    return count
a = 'abcdefg'
print(my_len(a)) #括号里面的a是实际参数,实参

执行输出

7


函数的传参

两方面:

    实参角度:

        1.位置传参 按顺序,一一对应。

例子

def func(a,b,c):
    print(a)
    print(b)
    print(c)
func(2,3,4)

输出结果

2,3,4


实例:写一个函数,功能比大小,大的返回

def max_min(a, b):
    if int(a) > int(b):
        return a
    else:
        return b
print(max_min(1, 3))

执行结果

3


三元运算

简单的if和else判断,就可以用三元运算

上面函数的简写

def max_min(a,b):
    z = a if a > b else b
    return z
print(max_min(10,2))
# 进一步简写
def max_min(a, b):
    return a if a > b else b
print(max_min(10,20))


2 关键字传参,不安顺序,一一对应

比如:

def max_min(a,b):
    return a if a > b else b
print(max_min(b=10, a=20))

执行结果

20


错误的示例

def func1(a,b,c,d,e):
    print(a)
    print(b)
    print(c)
    print(d)
    print(e)
func1(1,2,c=3,4,5)

执行报错

blob.png

注意:位置参数,永远在位置参数的后面

即改成

def func1(a,b,c,d,e):
    print(a)
    print(b)
    print(c)
    print(d)
    print(e)
func1(1,2,c=3,d=4,e=5) #或者 func1(1,2,3,4,e=5)


3 混合参数,关键字参数永远在最后面


实参角度:

        1,位置传参。按顺序,一一对应

        2,关键字传参,不按顺序,一一对应

        3,混合传参,关键字参数永远在位置参数的后面


按照形参角度

1,位置传参,按顺序,一一对应

例子

def func(a,b,c):
    print(a)
    print(b)
    print(c)
func('abc',3,4)

执行结果

abc

3

4


2. 默认参数

def func(a, b=666):
    print(a,b)
func(1,2)

执行结果

1 2


def func(a, b=666):
    print(a,b)
func(1)

执行结果

1 666

形参角度:

        1.位置传参,按顺序,一一对应

        2.默认参数,传参则覆盖,不传则默认


实例,录入员工信息表,使用函数封装

def infor_entry(username,sex='男'):
    with open('name_list', encoding='utf-8', mode='a') as f:
        f.write('{}\t{}\n'.format(username,sex))

while True:
    username = input("请输入姓名(男生以1开头)").strip()
    if '1' in username:
        username = username[1:]
        infor_entry(username)
    else:
        infor_entry(username,'女')

执行后的name_list结果为

blob.png


下面看个例子

错误示例

def func(b=666,a):
    print(a,b)
func(1,2)

执行报错

blob.png

默认参数必须在位置参数的后面

形参角度:

        1,位置传参。按顺序,一一对应

        2,默认参数。传参则覆盖,不传则默认,默认参数永远在位置参数后面


本章节练习题

#!/usr/bin/env python
# coding: utf-8
__author__ = 'www.py3study.com'
# 2、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
# 方法1
# def func(l):
#     new_list = []
#     for i in range(len(l)):
#         if i % 2 == 1:
#             new_list.append(l[i])
#     return new_list
# print(func((1,2,3,4,5,6,7,8,9)))
# 方法2
# def func(l):
#     l = l[1::2]
#     return l
# print(func((1,2,3,4,5,6,7,8,9)))
#方法3
# def func1(argv):return argv[1::2]
# print(func1((1,2,3,4,5,6,7,8,9)))


# 3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
# 方法一
# def func(l):
#     if len(l) > 5:
#         return True
#     else:
#         return False
# print(func('abcdef'))
# 方法二
# 因为它是一个不等式,结果不是True就是False,所以可以用三元运算
# def func(l):
#     return True if len(l) > 5 else False
# print(func('abcdef'))

# 4、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
# 方法1
# def func(l):
#     if len(l) > 2:
#         l = l[:2]
#     else:
#         l = l
#     return l
# print(func([1,2,3,4]))
# 方法2
# def func(l):
#     return l[:2] if len(l) > 2 else l
# print(func([1,2,3,4]))
# 方法3,即使小于2,也可以切片,返回原来的值,切片不会报错
# def func(argv):
#     return argv[:2]
# print(func([1,2,3,4]))

# 5、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数,并返回结果。
# def func(argv):
#     dic = {'digit':0,'alpha':0,'space':0,'other':0}
#     for i in argv:
#         #判断是否为数字
#         if i.isdigit():
#             dic['digit'] += 1
#         #判断是否为字母
#         elif i.isalpha():
#             dic['alpha'] += 1
#         #判断是否为空格
#         elif i.isspace():
#             dic['space'] += 1
#         else:
#             dic['other'] += 1
#     return '数字{},字母{},空格{},其它{}'.format(dic['digit'],dic['alpha'],dic['space'],dic['other'])
# print(func('sfsf 1231 fyi324#@%#%@! fd12'))


# 7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
#  dic = {"k1": "v1v1", "k2": [11,22,33,44]}
#  PS:字典中的value只能是字符串或列表
# 方法一
# dic = {"k1": "v1v1", "k2": [11,22,33,44]}
# print(len(dic))
# def fun(dic):
#     for x,y in dic.items():
#         if len(y) > 2:
#             y = y[:2]
#             dic[x] = y
#     return dic
# print(fun(dic))
# 方法二
# def fun(dic):
#     for i in dic:
#         if len(dic[i]) > 2:
#             dic[i] = dic[i][:2]
#     return dic
# print(fun(dic = {"k1": "v1v1", "k2": [11,22,33,44]}))
# 方法3,代码优化
# def fun(dic):
#     for i in dic:
#         dic[i] = dic[i][:2]
#     return dic
# print(fun(dic = {"k1": "v1v1", "k2": [11,22,33,44]}))


# 8、写函数,接收两个数字参数,返回比较大的那个数字。
# def fun1(x,y):
#     return x if x > y else y
# print(fun1(5,10))

# 9、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(进阶)。
# import os
# def fun1(x,y,z):
#     with open(x,encoding='utf-8',mode='r') as f1,\
#         open('x.bak',encoding='utf-8',mode='w') as f2:
#         for i in f1:
#             new_i = i.replace(y,z)
#             f2.write(new_i)
#     os.remove(x)
#     os.rename('x.bak', x)
# fun1('zuoye7.txt','zhangsan','lisi')


# 10、写一个函数完成三次登陆功能,再写一个函数完成注册功能(进阶)

# class Login(object):
#     def __init__(self):
#         print("欢迎访问!首次登陆,请注册一个账号!")
#         self.name_and_pwd = []
#         self.account_registration()
#     def account_registration(self):
#         while True:
#             self.username = input('请输入账户名:').strip()
#             if self.username.isdigit():
#                 print("账号不能为纯数字")
#             else:
#                 self.name_and_pwd.append(self.username)
#                 self.password = input("请输入密码:").strip()
#                 self.again_password = input("再次输入密码确认:").strip()
#                 if self.password == self.again_password:
#                     print("账号注册成功")
#                     self.name_and_pwd.append(self.again_password)
#                     self.sign_in()
#                 else:
#                     print("两次输入的密码不一致!")
#     def sign_in(self):
#         max = 3
#         count = 0
#         while count < max:
#             count += 1
#             username = input("账号:").strip()
#             if username == self.name_and_pwd[0]:
#                 password = input("密码:").strip()
#                 if password == self.name_and_pwd[1]:
#                     print("登陆成功!")
#                     exit()
#                 else:
#                     print("密码不存在")
#             else:
#                 print('账号不存在!')
#                 print('剩余{}次机会'.format(max-count))
#             if max - count == 0:
#                 exit()
#
# if __name__ == '__main__':
#     st = Login()



免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python3--函数初识

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python3--函数初识

比如python没有len()方法,如何求字符串长度,使用for循环s=dadhhrqlasdcount=0foriins:count+=1print(count)执行输出11求列表呢?l1=[1,2,3,4,5,a,b,c,abc,10]
2023-01-30

【Python3】初识Python、基

1. python介绍发展史等等....减少开发成本2. python与其他语言对比C语言:代码-->机器码其他高级语言:代码-->字节码-->机器码3. python种类cpython:常用的python就是cpython,python代
2023-01-31

Python函数初识

一、函数是什么​ 计算机语言中的函数是类比于数学中的函数演变来的,但是又有所不同。前面的知识中我们学会了运用基础语法(列表、字典)和流程控制语句貌似也能处理一些复杂的问题,但是相对于相似的大量重复性的操作我们就没办法用之前的逻辑方法来解决了
2023-01-30

python 函数的初识

01 内容大纲函数的初识函数的结构与调用函数的返回值函数的参数02 具体内容函数的初识写一个获取字符串总个数的代码,不能用len():s1 = 'fjkdsfjdssudafurpojurojregreuptotuproq[t'count
2023-01-31

python之初识函数

函数: 函数是对功能或动作的封装.函数的语法和定义:def 函数名(): 函数体调用函数:函数名() 函数返回值:return : 返回def yue(): print("拿出手机") print("打开陌陌") p
2023-01-30

Python3中zip()函数知识点小结

本文主要介绍了Python3中zip()函数知识点小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-28

python3 函数

形式参数:实际参数:固定数参数默认参数:给参数一个默认值,赋予新值时覆盖默认值。位置参数:sys.argv[XX]代码名称、函数、变量不可以与系统默认参数、模块名字相同if __name__ == '__main__':__name__:
2023-01-31

Python3函数

Python3 函数函数文字定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段;函数能提高应用的模块性,和代码的重复利用率。定义函数函数的定义有以下规则:函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
2023-01-31

Python3 函数

定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.分类: 内建函数 自定义函数说明: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数 函
2023-01-31

【Python3】Python函数

1. 函数对象函数是第一类对象,即函数可以当做数据传递可以被引用可以当做参数传递返回值可以是函数可以当做容器类型的元素def foo(): print('from foo')def index(): print('from in
2023-01-31

python基础知识之函数初阶——命名

python中的命名空间分三种:内置的命名空间,在启动解释器的时候自动加载进内存的各种名字所在的空间,比如print,input等不需要定义就可以使用的名字全局命名空间,就是从上到下所有我们定义的变量名和函数名所在的空间,是在程序从上到下被
2023-01-31

python3 eval()函数

eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果。so,结合math当成一个计算器很好用。可以把list,tuple,dict和string相互转化a = "[[1,2], [3,4], [5
2023-01-31

初识数据库

什么是数据库  简单地说,就是存储数据的仓库.数据库管理系统(DBMS)   是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库分类  关系型数据库(1,oracle数据库  2,mysql数据库  3
2023-01-30

python3 数组(列表)初始化

在Python中,可以使用以下方法初始化一个数组(列表):1. 使用方括号 [] 来创建一个空的数组:```my_list = []```2. 使用方括号 [] 并在其中添加元素来创建一个包含初始值的数组:```my_list = [1,
2023-10-11

python3--函数进阶

例子def func(a,b,c,d,e,f,g): passprint(func(a, b , c, d, e, f, g))如果再加30个参数呢?,在后面继续添加?有没有万能的参数,可以代表一切参数呢?*args 动态参数,万能参数a
2023-01-30

python3--高阶函数

# Auther: Aaron Fan'''# 高阶函数:把一个函数名,以实参的形式,传给这个函数的形参,这个函数就称为高阶函数。比如下面的形参c,对应的实参是一个函数名abs。# 函数abs()的功能是取绝对值def add(a,b,c)
2023-01-31

python3--嵌套函数

# Auther: Aaron Fan# 嵌套函数# 定义:# 在一个函数体内,用def重新定义新的函数,才叫嵌套函数# 示例1:  #属于嵌套函数def foo():    print("in the foo")    def bar()
2023-01-31

python3的zip函数

zip函数接受任意多个可迭代对象作为参数,将对象中对应的元素打包成一个tuple,然后返回一个可迭代的zip对象.这个可迭代对象可以使用循环的方式列出其元素若多个可迭代对象的长度不一致,则所返回的列表与长度最短的可迭代对象相同.用法1:用两
2023-01-31

初识MySQL数据库

一 、引言假设现在你已经是某大型互联网公司的高级程序员,让你写一个火车票购票系统,来hold住双十一期间全国的购票需求,你怎么写?由于在同一时段抢票的人数太多,所以你的程序不可能写在一台机器上,应该是多台机器一起分担用户的购票请求。那么问题就来了,票务信息的数
初识MySQL数据库
2021-04-15

MySQL_初识数据库

楔子  假设现在你已经是某大型互联网公司的高级程序员,让你写一个火车票购票系统,来hold住十一期间全国的购票需求,你怎么写?  由于在同一时段抢票的人数太多,所以你的程序不可能写在一台机器上,应该是多台机器一起分担用户的购票请求。  那么问题就来了,票务信息
MySQL_初识数据库
2016-05-22

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录