python,函数的基本用法

时间:2022-04-17 08:15:26

一.函数

函数的概念:对功能或者动作的封装可以帮我们把一段公共的代码提取出来

语法如下

def 函数名(形参):
函数体
函数名(实参) # 函数名()
def yue():
print("1. 打开手机")
print("2. 打开陌陌")
print("3. 找个漂亮的小姐姐")
print("4. 探讨一下人生")
print("5. 一起出来happy") yue() # 执行一次函数
print("休息休息")
yue() # 再来一次
print(yue)

二.函数的返回值
return, 终止函数的运行
1. 函数内部不写return, 默认在最后返回None
2. 函数只写了return 返回None
3. return 值 有一个返回值
4. return 值1, 值2, 值3 .... 有多个返回值
返回值返回给调用方

例一
def yue():
print("1. 打开手机")
print("2. 打开陌陌")
print("3. 找个漂亮的小姐姐")
print("4. 探讨一下人生")
print("5. 一起出来happy")
ret = yue()
print(ret)
例二
def yue():
print("1. 打开手机")
print("2. 打开陌陌")
return
print("3. 找个漂亮的小姐姐")
print("4. 探讨一下人生")
print("5. 一起出来happy")
例三
def yue():
print("1. 打开手机")
print("2. 打开陌陌")
print("3. 找个漂亮的小姐姐")
print("4. 探讨一下人生")
print("5. 一起出来happy")
return "漂亮的小姐姐" # 返回到哪儿了???? 谁调用的就返回给谁
例四
def yue():
print("1. 打开手机")
print("2. 打开微信")
print("3. 找个漂亮的小姐姐")
print("4. 探讨一下人生")
print("5. 一起出来happy")
return "漂亮的小姐姐","大妈", "大爷", "鲜肉" # 返回到哪儿了???? 谁调用的就返回给谁
ret = yue() # ('漂亮的小姐姐', '大妈', '大爷', '鲜肉')
print(ret)

三.函数的参数(一部分)
形参: 在函数声明位置的变量
1. 位置参数2. 默认值参数

def regist(id, name, age, gender="男"): # 从语法上讲. 不允许, 从代码运行也不允许
print(id, name, age, gender)
regist(3, "王大锤", 20)
regist(4, "李鸿洁", 18, "女")

3. 混合参数  位置参数, 默认值参数
4. 动态传参, *args, **kwargs
实参: 在函数调用的时候给函数传递的具体的值
1. 位置参数

def chi(good_food, junk_food,drink, sweet, xiaoshi, lingshi1, lingshi2, lingshi3, good_food2, xiaoye, shuiguo):
print(good_food, junk_food, drink, sweet)
chi("猪蹄", "北冰洋", "哈根达斯", "薯条", "罐头", "大米饭") def chi(good_food, junk_food,drink, sweet):
print(good_food, junk_food, drink, sweet) chi("大米饭", "猪蹄", "北冰洋", "哈根达斯")

2. 关键字参数

def chi(good_food, junk_food,drink, sweet):
print(good_food, junk_food, drink, sweet)
# 关键字参数: 必须按照形参的名字来传递信息
chi(good_food="大米饭", sweet="哈根达斯", drink="饮料", junk_food="薯条")

3. 混合参数

def chi(good_food, junk_food, drink, sweet):
print(good_food, junk_food, drink, sweet)
chi("大米饭", "薯条", sweet="哈根达斯", drink="北冰洋") # positional argument follows keyword argument 

顺序: 位置, 关键字
传参: 把实参赋值给形参的过程

四.函数的应用

1.注册
def regist():
f = open("account", mode="r+", encoding="utf-8")
while 1:
# 输入用户名和密码
username = input("请输入你的用户名:")
password = input("请输入密码:") for line in f:
if line.strip().split(":")[0] == username:
print("对不起, 该用户已经注册!")
break
else:
print("恭喜, 注册成功")
f.write("\n"+username+":"+password)
# break # 能执行到这个break. for一定是执行完了的.
f.flush()
f.close()
return # 直接结束函数的调用
regist() 2.登录
def login():
username = input("请输入用户名:") # sylar:123
password = input("请输入密码:") # 123
f = open("account", encoding="utf-8")
for line in f:
if line.strip() == username + ":" + password:
print("恭喜你.登录成功 ")
return True # True, 登录成功 else:
print("对不起, 用户名或密码错误")
return False # False 登录失败
login()
login()
login()
login()

练习六..作业

1.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def func(lst):
return lst[1::2]
print(func(['王大锤','刘亦菲','曾小贤','王祖贤','张柏芝','陈小春']))
2.写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def func(lst):
return len(lst)>5
print(func([1,2,2]))
3.写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。
def func(lst):
if len(lst)>2:
return lst[:2]
print(func([1,2]))
4.写函数,计算传入函数的字符串中, 数字、字母、空格 以及 其他内容的个数,并返回结果。
def func(s):
shuzi = 0
zimu = 0
kongge = 0
qita = 0
for c in s:
if c.isdigit():
shuzi+=1
elif c.isalpha():
zimu+=1
elif c== " ":
kongge+=1
else:
qita += 1
print(shuzi,zimu,kongge,qita)
return shuzi,zimu,kongge,qita
func("hidjhdsfhfhsdsd2323453478%R$%$%$%+--==-g-//..,l")
5.写函数,接收两个数字参数,返回比较大的那个数字。
方案一
def func(a, b):
if a > b:
return a
else:
return b
方案二
def func(a, b):
return a if a > b else b # a>b? a:b 6.写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
def func(dic):
dd = {}
for k, v in dic.items():
if len(v) > 2:
v = v[:2]
dd[k] = v
return dd dic = {"k1": "v1v1", "k2": [11,22,33,44]}
print(func(dic))
7.写函数,此函数只接收一个参数且此参数必须是列表数据类型, 此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。
def func(lst):
dic = {}
for i in range(len(lst)): # 索引 0 1 2
dic[i] = lst[i]
return dic print(func([11,22,33]))
8.写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。 用户通过输入这四个内容,然后将这四个内容传入到函数中, 此函数接收到这四个内容,将内容追加到一个student_msg文件中。
def func(name,edu, age, gender="男"):
f = open("student_msg", mode="a", encoding="utf-8")
f.write(name+"$$"+gender+"$$"+edu+"$$"+age+"\n")
f.flush()
f.close()
9.题升级:支持用户持续输入,Q或者q退出,性别默认为男, 如果遇到女学生,则把性别输入女
while 1:
content = input("请输入姓名,年龄,学历,性别(周杰伦,18,小本,)(q退出)")
if content.upper() == "Q":
break
lst = content.split(",") if len(lst) <= 3 or lst[3] == '':
func(lst[0], lst[2], lst[1])
else:
func(lst[0], lst[2], lst[1], lst[3] )
def func(s="男"):
print(s)
func()
10.写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成文件的修改操作(升级题)。
def func(file_path, old, new):
with open(file_path, mode="r", encoding="utf-8") as f1, \
open(file_path + "_副本", mode="w", encoding="utf-8") as f2:
for line in f1:
s = line.replace(old, new)
f2.write(s)
os.remove(file_path)
os.rename(file_path+"_副本", file_path) func("student_msg", "$$", "@@")

  

  

python,函数的基本用法的更多相关文章

  1. Python 函数和相关用法笔记

    python中%r和%s的区别 总结:%r打印时能够重现它所代表的对象 __str__和__repr__的用法

  2. Python函数的一点用法

    #python的基本语法网上已经有很多详细的解释了,写在这里方便自己记忆一些 BIF是python内置的函数,任何一门语言都能用来创造函数,python也不例外 1.创建一个函数 def func() ...

  3. python函数和lambda表达式学习笔记

    1. python函数 不同于其他语言,python支持函数返回多个值 为函数提供说明文档:help(函数名)或者函数名.__doc__ def str_max(str1, str2): ''' 比较 ...

  4. python函数的用法

    python函数的用法 目录: 1.定义.使用函数 1.函数定义:def 2.函数调用:例:myprint() 3.函数可以当作一个值赋值给一个变量 例:a=myprint()    a() 4.写r ...

  5. Python正则替换字符串函数re&period;sub用法示例(1)

    本文实例讲述了Python正则替换字符串函数re.sub用法.分享给大家供大家参考,具体如下: python re.sub属于python正则的标准库,主要是的功能是用正则匹配要替换的字符串然后把它替 ...

  6. Python函数装饰器原理与用法详解《摘》

    本文实例讲述了Python函数装饰器原理与用法.分享给大家供大家参考,具体如下: 装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值 ...

  7. python简单的函数定义和用法实例

    python简单的函数定义和用法实例 这篇文章主要介绍了python简单的函数定义和用法,实例分析了Python自定义函数及其使用方法,具有一定参考借鉴价值,需要的朋友可以参考下 具体分析如下: 这里 ...

  8. python学习三十五天函数递归的用法

    python函数递归就是自己调用自己,无限循环,但是python限制了调用的次数1000次,就会终止,递归用在栏目分类,采集程序比较多,下面简单说函数递归用法和实例 1,函数递归用法 def func ...

  9. 为什么需要激活函数 为什么需要归一化 python内置函数:enumerate用法总结

    为什么需要激活函数 为什么需要归一化 python内置函数:enumerate用法总结 待办 激活函数的用途(为什么需要激活函数)? 如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情 ...

随机推荐

  1. 用js写的极简的导航菜单,带下拉列表

    太简单了,不多说,但是自己还是写了一会,因为总会出现这样那样小的错误,毕境最近在复习和学习一些前台,欢迎看到的各位能给点改进意见或者其它的,Thank you! 首先是发图,只用CSS写了结构,几乎没 ...

  2. 使用ASP&period;NET 构建 Web 应用程序快速入门-8小时的免费培训视频

    - Scott Hanselman的中文博客[转载] [原文发表地址] Building Web Apps with ASP.NET Jump Start - 8 Hours of FREE Trai ...

  3. 【Android】listview优化

    http://www.cnblogs.com/over140/archive/2011/03/23/1991100.html http://blog.sina.com.cn/s/blog_5fc933 ...

  4. 第一份开发工作,边学边做android

    我刚刚毕业,在培训学校学的Java web开发,虽然学的没有大学生那么丰富细致,没有他们理论基础扎实,但是这是我学习软件开发的唯一方式了. 从小学我学习就是倒数2.3等,所有人都认为我是个没法学习的孩 ...

  5. 英语口语练习系列-C01-好棒

    古诗 来自百度 It's cool. It is neat. It's righteous! It's righteous! 酷毙了! righteous是 cool 的高级了 如果一件事让你无法用 ...

  6. (原)Max Area of Island(即连通域标记)

    转载请注明出处: https://www.cnblogs.com/darkknightzh/p/10493114.html 1. 问题 Given a non-empty 2D array grid ...

  7. Linux 查看系统硬件信息

    linux查看系统的硬件信息,并不像windows那么直观,这里我罗列了查看系统信息的实用命令,并做了分类,实例解说. cpu lscpu命令,查看的是cpu的统计信息. blue@blue-pc:~ ...

  8. VCL 中的 Windows API 函数&lpar;2&rpar;&colon; ActivateKeyboardLayout

    ActivateKeyboardLayout 分别在 Controls.DBGrids.Grids 单元用到, 基本都是如下语句: ActivateKeyboardLayout(Screen.Defa ...

  9. 【BZOJ】1101 &lbrack;POI2007&rsqb;Zap(莫比乌斯反演)

    题目 传送门:QWQ 分析 莫比乌斯反演. 还不是很熟练qwq 代码 //bzoj1101 //给出a,b,d,询问有多少对二元组(x,y)满足gcd(x,y)=d.x<=a,y<=b # ...

  10. 15&period;Iterator和for&period;&period;&period;of循环

    1.Iterator(遍历器)的概念 JavaScript原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),ES6又添加了Map和Set.这样就有了四种数据集合,用户还可以 ...