函数可变参数

#可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。
def calc(*number):
sum = 0
for x in number:
sum = sum + x * x
return sum

#直接调用
print(calc(5,5,5))
#列表参数调用:*num表示把num这个list的所有元素作为可变参数传进去
num = [1,2,3]
print(calc(*num))

#练习:传入一个或多个参数并计算参数乘积
def product(x,*args):
if len(args):
sum = 1
for m in args:
sum = sum * m
return x * sum
else:
return x

函数关键字参数

#关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
def person(name,age,**kw):
print(name,age,‘other:’,kw)

#直接调用
person(‘sungang’,27,sex=‘男’,job=‘Python Engineer’)
#sungang 27 other: {‘job’: ‘Python Engineer’, ‘sex’: ‘男’}

#dist参数调用
#注意:otherInfo表示把otherInfo这个dict的所有key-value用关键字参数传入到函数的kw参数,kw将获得一个dict,kw获得的dict是otherInfo的一份拷贝,对kw的改动不会影响到函数外的otherInfo
otherInfo = {‘sex’:‘male’,‘job’:‘Python Engineer’}
person(‘lidysun’,28,**otherInfo)
#lidysun 28 other: {‘job’: ‘Python Engineer’, ‘sex’: ‘male’}

命名关键字参数

#调用时命名关键字参数必须传入参数名,关键字参数之间位置不限。如果没有传入参数名,调用将报错
def person(name,age,*,sex,job):
print(‘name:%s,age:%d;sex:%s,job:%s’ %(name,age,sex,job))
person(‘sg’,27,job=‘Engineer’,sex=‘male’)

#如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了
def person2(name,age,*args,sex,job):
print(‘name:%s,age:%d;sex:%s,job:%s’ %(name,age,sex,job))
person2(‘sungang’,28,sex=‘男’,job=‘Python Engineer’)

#命名关键字参数可以设置默认值,如果有默认值,调用时可不传递该参数
def person3(name,age,*,wechat=“sg820262236”,job):
print(‘name:%s,age:%d;wechat:%s,job:%s’ %(name,age,wechat,job))
person3(‘sungang’,27,job=‘Engineer’)
person3(‘lidysun’,28,wechat=‘1008611’,job=‘Engineer’)

递归函数

#在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
#例如计算阶乘n! = 1 x 2 x 3 x … x n
def fact(n):
if n == 1:
return n
else:
return n * fact(n-1)

print(fact(5)) #120
#使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。
print(fact(1000))
#报错 RecursionError: maximum recursion depth exceeded in comparison

尾递归函数优化

#尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。
def fact(num):return fact_detail(num,1)def fact_detail(num,product):if num == 1:return productelse:return fact_detail(num-1,num * product) #函数返回的时候,调用自身本身,并且,return语句不能包含表达式print(fact(5)) #120

切片

#字符串切片实例:字符串去首尾空格
def trim(s):while s[:1] == ' ':s = s[1:]while s[-1:] == ' ':s = s[:-1]return sprint(trim('  sun   gang   '))
#sun   gang

迭代

列表迭代:
字典迭代:

#默认迭代字典的key值:
person = {'name':'sungang','age':27}
for x in person:print(x)
# name
# age# 迭代字典的vaule值
for y in person.values():print(y)
# sungang
# 27#利用迭代求列表中最小最大值,返回tuple:
def findMinAndMax(L):if len(L) == 0:return (None,None)if(len(L) == 1):return (L[0],L[0])max = min = L[0]for x in L:if x >= max:max = xif x <= min:min = xreturn (min,max)

在这里小编整理了全套的Python零基础学习资料,一些Python常用工具的安装包,学习路线图。帮助你们快速的入门Python。搭上Python这列顺风车,早一天学会早一天拿到Python行业的红利。资料路线图都可以找我拿,我还可以给大家一些比较基础的python项目视频!

python福利教程领取方式:
1、点赞+评论(勾选“同时转发”)
2、关注小编。并私信回复关键字【19】
(一定要私信哦~点击我的头像就能看到私信按钮了)

Python基础知识详解相关推荐

  1. Python基础知识详解 从入门到精通(八)魔法方法

    目录 Python基础知识详解 从入门到精通(八)魔法方法 什么是魔法方法 基础魔法方法(较为常用) 比较操作符 算数运算符 反运算(类似于运算方法) 增量赋值运算 一元操作符 类型转换 上下文管理( ...

  2. 【BLE】OTA基础知识详解

    [BLE]OTA基础知识详解 一. 概念 1. 缩写 BIM Boot Image Manager , the software bootloader CRC cyclic redundancy ch ...

  3. R语言基础知识详解及概括

    R语言基础知识详解及概括 目录 R语言基础知识详解及概括 R数据可视化示例 R语言进行数据创建

  4. R语言可视化绘图基础知识详解

    R语言可视化绘图基础知识详解 图形参数:字体.坐标.颜色.标签等: 图像符号和线条: 文本属性: 图像尺寸及边界: 坐标轴.图例自定义等: 图像的组合: #install.packages(c(&qu ...

  5. 计算机网络相关知识 参考博客 子网掩码怎么理解 网关及网关的作用 路由器基础知识详解

    子网掩码怎么理解 https://blog.csdn.net/farmwang/article/details/64132723 网关及网关的作用 https://blog.csdn.net/zhao ...

  6. RabbitMQ基础知识详解

    RabbitMQ基础知识详解 2017年08月28日 20:42:57 dreamchasering 阅读数:41890 标签: RabbitMQ 什么是MQ? MQ全称为Message Queue, ...

  7. Android随机点名器,Excel基础知识-详解随机点名器

    说道制作个案例纯粹意外,我多少有点选择恐惧症,为了不在"选择"上纠结,就自己小玩了一下,就用了程序做了个选择器,其实很简单,就是有小时候玩的"点兵点将",稍微变 ...

  8. 网络管理之基础知识详解

    网络管理之基础知识详解 目录 3.1 网络的特征 3.2 拓扑结构 4.1 OSI简介 4.2 数据传输过程 4.3 分层作用 4.4 PDU 5.1 单播 5.2 多播 5.3 广播 5.4 三种通 ...

  9. 工业相机基础知识详解

    工业相机基础知识详解 工业相机是机器视觉系统的一个最关键的组件.他的功能很简单,就是将被检测的物体拍摄下来,然后转换成电脑可以识别的图像,以便以后进行图像处理,从而完成检测任务.工业相机俗称工业摄像机 ...

最新文章

  1. PL/SQL developer连接oracle出现“ORA-12154:TNS:could not resolve the connect identifier specified”问题的解决
  2. PowerShell2.0之Windows排错(一)启动故障排错
  3. Django中自定义实现RESTful API
  4. DFS深搜与BFS广搜专题
  5. 【网站】Kiwi浏览器中文网
  6. 外卖和快递行业数据_外卖和快递骑手管理“上轨道”
  7. 12月29日云栖精选夜读 | SQL Server数据库漏洞评估了解一下
  8. 【LeetCode】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
  9. 炫彩渐变液态海报设计,太skr了!
  10. 呕心沥血 JavaScript知识点梳理大全,超详细 建议收藏!!!
  11. System.Data.Entity.Core.MetadataException:“Unable to load the specified metadata resource.”
  12. Hacker News 12 月招聘趋势:React 已连续霸榜 19 个月
  13. 在Win10中通过Google Chrome运行安卓应用
  14. oracle 取时间的日期函数,Oracle日期函数简介
  15. elixir 规格_六家使用Elixir的著名公司-以及为什么做出改变
  16. 计算机专业sci二区论文难吗,SCI二区论文发表难度大吗
  17. 在线教育凛冬将至!强敌环伺的尚德机构,能否突出重围?
  18. SQL SERVER RBAC权限管理表
  19. 基于SGIP协议的短信网关接口
  20. EPICS应用程序开发2 -- EPICS概要

热门文章

  1. ICML 2021 (Long Oral) | 深入研究不平衡回归问题
  2. 男导师的妻子叫“师母”,那么女导师的丈夫该怎么称呼?
  3. 终于有人把计算机视觉讲明白了
  4. 光缆能预警地震?谷歌做到了!毫秒级反应速度,140万公里海缆有望成为报警器...
  5. 来个例子,彻底弄懂什么是 EM 算法
  6. 热榜第一!GitHub 标星 5.6w,如何用 Python 实现所有算法?
  7. 函数assert()详解
  8. python进程执行带有参数的任务(args、kwargs)
  9. 普适方案|资管新规落地,资管领域存量市场竞争激烈。专家:得转型(附产品推广)
  10. 详解:Camera-IMU内外参标定原理