首页 > 学院 > 开发设计 > 正文

Python初体验之基础语法(三)

2019-11-14 17:05:11
字体:
来源:转载
供稿:网友

所有测试语句基于Python 2.7.1

自学Python,如果哪里说的不恰当,还请指正。谢谢。

示例绝大部分来自博客园vamei的python教程

 部分内容来自廖雪峰的Python博客

1.函数参数  关键字传递

#! /usr/bin/env python# coding=UTF-8# 函数参数关键字传递 根据每个参数的名字传递参数-->无需遵照位置对应关系# 可以与位置传递混用,但是直接的值传递的参数要出现在关键字参数之前def sum(a, b, c):    return a + b + cPRint "sum(1,b=2,c=3) = ", sum(1, b=2, c=3)print "sum(c=3,b=4,a=5) = ", sum(c=3, b=4, a=5)

 

2.函数参数默认值

# 赋予参数默认值  如果调用函数时没有传递对应位置上的值,将使用默认值def squre_sum(a, b, c=1):    return a ** a + b ** b + c ** cprint "squre_sum(2,3)=", squre_sum(2, 3)print "squre_sum(2,3,4)=", squre_sum(2, 3, 4)

 定义默认参数要牢记一点:默认参数必须指向不变对象!

否则重复调用函数时,并使用默认参数时,默认参数的值会发生改变。

 

3.函数参数 包裹传递 可变参数

# 函数参数包裹传递 不确定调用时会传递几个参数# 包裹位置传递def func(*name):    print type(name)    print nameprint func(1, 2, 3)print func(1, 2, 3, 4, 5)

这里为什么每次都输出有None,还请知道的园友告知一下,谢谢。

感谢园友 月缺一格 的指正,这里函数没有返回值,故默认返回None.

 

# 包裹关键字传递 dic是一个字典 收集所有的关键字传递给函数func_tdef func_t(**dic):    print type(dic)    print dicprint func_t(a=1, b=2)print func_t(a=3, b=4, c=5)

 

4.解包裹

# 解包裹 *和** 也可以在调用的时候使用 ,即解包裹 unpackingdef func_m(a, b, c):    print a, b, cargs = (1, 2, 3)# 在传递tuple时,让tuple的每一个元素对应一个位置参数,*提示Python去拆分func_m(*args)# 词典解包裹dic = {'a': 11, 'b': 22, 'c': 33}func_m(**dic)  # 得到value值func_m(*dic)   # 得到key值

 

5.循环设计

string = 'xiaomi vs meizu'for index in range(0, len(string), 1):    print string[index],

分别定义上限start,下限stop和每次循环的步长step

在python 2.x中,要使 print 不换行 在print语句最后加逗号(英文半角符号形式)
>>> print x, 

在python 3.x中,要使 print 不换行,写成如下格式
>>> print(x, end="")

因为print函数的原型是

print(*objects, sep=' ', end='/n', file=sys.stdout, flush=False)

默认是以 /n 结尾,即换行。把 /n 替换为空字符串就行。

 

string = 'xiaomi vs meizu'print '/n', '字符串长度:', len(string)for (index, char) in enumerate(string):    print index,    print char,

利用enumerate()函数,可以在每次循环中同时得到下标和元素,enumerate()在每次循环中,

返回的是一个包含两个元素的定值表(tuple),两个元素分别赋予index和char。

 

a = [1, 2, 3]b = [4, 5, 6]c = [7, 8, 9]for (x, y, z) in zip(a, b, c):    print (x, y, z)

如果你多个等长的序列,然后想要每次循环时从各个序列分别取出一个元素,可以利用zip()函数

zip()函数的功能,就是从多个列表中,依次各取出一个元素。每次取出的(来自不同列表的)元素合成一个元组,

合并成的元组放入zip()返回的列表中。zip()函数起到了聚合列表的功能。

 

a = [1, 2, 3]b = [4, 5, 6]# cluster 聚合zipped = zip(a, b)print '聚合列表:', zipped# decompose 分解ma, mb = zip(*zipped)print '分解列表:', ma, mb

 

小结:

Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。

默认参数一定要用不可变对象,如果是可变对象,运行会有逻辑错误!

要注意定义可变参数和关键字参数的语法:

*args是可变参数,args接收的是一个tuple;

**kw是关键字参数,kw接收的是一个dict。

以及调用函数时如何传入可变参数和关键字参数的语法:

可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3))

关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})

使用*args**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。

 

PS:

首次安装PyCharm IDE会发现,在调试的输出窗口中文显示为乱码;

这是因为工程默认的编码是GBk,而IDE的默认编码是UTF-8,

打开File --> settings--> Editor -->File Encodings 选项卡

将他们的编码统一一下,设置为支持中文的编码即可,如UTF-8。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表