Python基础知识详解
函数可变参数
#可变参数允许你传入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基础知识详解相关推荐
- Python基础知识详解 从入门到精通(八)魔法方法
目录 Python基础知识详解 从入门到精通(八)魔法方法 什么是魔法方法 基础魔法方法(较为常用) 比较操作符 算数运算符 反运算(类似于运算方法) 增量赋值运算 一元操作符 类型转换 上下文管理( ...
- 【BLE】OTA基础知识详解
[BLE]OTA基础知识详解 一. 概念 1. 缩写 BIM Boot Image Manager , the software bootloader CRC cyclic redundancy ch ...
- R语言基础知识详解及概括
R语言基础知识详解及概括 目录 R语言基础知识详解及概括 R数据可视化示例 R语言进行数据创建
- R语言可视化绘图基础知识详解
R语言可视化绘图基础知识详解 图形参数:字体.坐标.颜色.标签等: 图像符号和线条: 文本属性: 图像尺寸及边界: 坐标轴.图例自定义等: 图像的组合: #install.packages(c(&qu ...
- 计算机网络相关知识 参考博客 子网掩码怎么理解 网关及网关的作用 路由器基础知识详解
子网掩码怎么理解 https://blog.csdn.net/farmwang/article/details/64132723 网关及网关的作用 https://blog.csdn.net/zhao ...
- RabbitMQ基础知识详解
RabbitMQ基础知识详解 2017年08月28日 20:42:57 dreamchasering 阅读数:41890 标签: RabbitMQ 什么是MQ? MQ全称为Message Queue, ...
- Android随机点名器,Excel基础知识-详解随机点名器
说道制作个案例纯粹意外,我多少有点选择恐惧症,为了不在"选择"上纠结,就自己小玩了一下,就用了程序做了个选择器,其实很简单,就是有小时候玩的"点兵点将",稍微变 ...
- 网络管理之基础知识详解
网络管理之基础知识详解 目录 3.1 网络的特征 3.2 拓扑结构 4.1 OSI简介 4.2 数据传输过程 4.3 分层作用 4.4 PDU 5.1 单播 5.2 多播 5.3 广播 5.4 三种通 ...
- 工业相机基础知识详解
工业相机基础知识详解 工业相机是机器视觉系统的一个最关键的组件.他的功能很简单,就是将被检测的物体拍摄下来,然后转换成电脑可以识别的图像,以便以后进行图像处理,从而完成检测任务.工业相机俗称工业摄像机 ...
最新文章
- PL/SQL developer连接oracle出现“ORA-12154:TNS:could not resolve the connect identifier specified”问题的解决
- PowerShell2.0之Windows排错(一)启动故障排错
- Django中自定义实现RESTful API
- DFS深搜与BFS广搜专题
- 【网站】Kiwi浏览器中文网
- 外卖和快递行业数据_外卖和快递骑手管理“上轨道”
- 12月29日云栖精选夜读 | SQL Server数据库漏洞评估了解一下
- 【LeetCode】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
- 炫彩渐变液态海报设计,太skr了!
- 呕心沥血 JavaScript知识点梳理大全,超详细 建议收藏!!!
- System.Data.Entity.Core.MetadataException:“Unable to load the specified metadata resource.”
- Hacker News 12 月招聘趋势:React 已连续霸榜 19 个月
- 在Win10中通过Google Chrome运行安卓应用
- oracle 取时间的日期函数,Oracle日期函数简介
- elixir 规格_六家使用Elixir的著名公司-以及为什么做出改变
- 计算机专业sci二区论文难吗,SCI二区论文发表难度大吗
- 在线教育凛冬将至!强敌环伺的尚德机构,能否突出重围?
- SQL SERVER RBAC权限管理表
- 基于SGIP协议的短信网关接口
- EPICS应用程序开发2 -- EPICS概要
热门文章
- ICML 2021 (Long Oral) | 深入研究不平衡回归问题
- 男导师的妻子叫“师母”,那么女导师的丈夫该怎么称呼?
- 终于有人把计算机视觉讲明白了
- 光缆能预警地震?谷歌做到了!毫秒级反应速度,140万公里海缆有望成为报警器...
- 来个例子,彻底弄懂什么是 EM 算法
- 热榜第一!GitHub 标星 5.6w,如何用 Python 实现所有算法?
- 函数assert()详解
- python进程执行带有参数的任务(args、kwargs)
- 普适方案|资管新规落地,资管领域存量市场竞争激烈。专家:得转型(附产品推广)
- 详解:Camera-IMU内外参标定原理