一.函数

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

语法如下

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.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. Python爬虫【一】爬虫的基本原理

    一.爬虫基本原理 1.获取网络数据 用户方式:浏览器提交请求->下载网页代码->解析/渲染成页面 爬虫方式:模拟浏览器发送请求->下载网页代码->只提取有用的数据->存放 ...

  2. JDBC和servlet设计思路、DAO模式思路、MVC思路粗略总结

    #JDBC和Servlet联合起来使用的项目思路: 说明:建库,最好一开始设置utf8字符集 step1: 在数据库中建表 如   create table t_user{ ...... } step ...

  3. A-作业01

    #1 简单作业 1. 系统的日志文件/var/log/secure /var/log/messages /var/log/cron会自动的进行轮询,系统是通过什么实现的? 2. 写出下面特殊符号在定时 ...

  4. 【题解】Luogu CF86D Powerful array

    原题传送门 裸的莫队啊,我博客里有对莫队较详细的介绍 这道题很简单,可以说是裸的模板 但是如何在已有的值上进行操作? 小学生应该都知道 那么转移就超级简单了qaq inline void add(re ...

  5. 05: 使用axios/vue-resource发送HTTP请求

    1.1 axios 简介与安装 1.axios简介 1. vue本身不支持发送AJAX请求,需要使用vue-resource.axios等插件实现 2. axios是一个基于Promise的HTTP请 ...

  6. opencv学习之路(2)、读取视频,读取摄像头

    一.介绍 视频读取本质上就是读取图像,因为视频是由一帧一帧图像组成的.1秒24帧基本就能流畅的读取视频了. ①读取视频有两种方法: A. VideoCapture cap; cap.open(“1.a ...

  7. 树之105 Construct Binary Tree from Preorder and Inorder Traversal

    题目链接:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 参考链 ...

  8. ODAC(V9.5.15) 学习笔记(四)TCustomDADataSet(5)

    7.其他 名称 类型 说明 FindKey 类似于BDE的相关功能,在当前数据集中查找指定的记录 FindNearest 移动游标到最符合查找要求的第一条记录处 FindMacro 当前数据集中是否存 ...

  9. centos6.8下源码编译安装tmux

    1. 获取源码 git clone https://github.com/tmux/tmux.git ~/tmux 2. 准备工作 2.1 安装ncurses开发库 yum install ncurs ...

  10. .net Core 2.1 后 Session保存,新页面获取不到值

    https://blog.csdn.net/kuui_chiu/article/details/81060051 https://blog.csdn.net/niunan/article/detail ...