基础的普及吧,基础语法对比

作者:计算机知识

Jupyter排版:https://www.cnblogs.com/dotnetcrazy/p/9102030.html

 

Jupyter最新排版:

汇总类别:

汇集类别:

文章汇总:

style="color: #3366ff;">昨夜初叶写大纲做demo,今日舍身午夜平息时间码文一篇,希望大家点点赞 O(∩_∩)O

NetCore: style="color: #008000;">https://github.com/lotapp/BaseCode/tree/master/netcore/1_POP/6func

Python: style="color: #008000;">https://github.com/lotapp/BaseCode/tree/master/python/1.POP/4.func_IO

在线演示: style="color: #008000;">http://nbviewer.jupyter.org/github/lotapp/BaseCode/tree/master/python/notebook/1.POP/4.func

style="color: #008000;">在线编制程序

首假如推广一下Python基础语法,比较着Net,新手更易于上手。相比较学习很有意思的,极度是局地尾部和笔触

自然感觉函数要说的地点非常少,细细一统一策画,开掘~照旧独立拉出一篇说说啊,之后就进入面向对象了,函数照旧有供给领会一下的,不然到时候Class里面的方法概念又要说了。

亲自过问的情势一贯在变,刚开首让大家纯熟一下 style="color: #ff6600;">VSCode,后来引进了 style="color: #007000;">ipython交互式编制程序的定义,未来就用前日讲的 style="color: #ff0000;">Notebook来演示了(VSCode未来也可以有这几个预览版的插件了)

Jupyter排版:https://www.cnblogs.com/dunitian/p/9119986.html

VSCode设置python3的开采条件(linux下暗中同意是python二)

多图旧排版:

一贯跳到扩张体系:https://www.cnblogs.com/dotnetcrazy/p/9175950.html#ext

在线浏览:http://nbviewer.jupyter.org/github/lotapp/BaseCode/tree/master/python/notebook/1.POP/2.str

在线演示基础的普及吧,基础语法对比。:http://nbviewer.jupyter.org/github/lotapp/BaseCode/blob/master/python/notebook/1.POP/1.base/01.helloworld.ipynb

VSCode设置python三的支付蒙受(linux下私下认可是python二)

先从函数定义说起吧:

事先声贝拉米(Bellamy)(Beingmate)下,幸免让新手进入误区:不是说Python比NetCore要好,而Python设计的目标正是==》让程序员解放出来,不要过度关切代码本人,那么品质、标准等等各位置隐患就存在了,前面编写三个不怎么大点的品种就看出来了。而且并非太受语言约束,此前笔者也说过,用各自语言的优势来为项目劳务~ 那才是付出王道。举个例子Python用来数量分析,Go用来出现管理等等,相当的少说了,记住一句话就能够: style="color: #ff6600;">“Net是性能价格比最高的”

style="color: #ff6600;">图片 1

招待提出更简便的语法~(文章中案例有多少个福利哦,两个是爱护,贰个是人造智能[ 密码:fqif])

招待建议更简便的语法~(小说中案例有七个福利哦,一个是调理,三个是人造智能[ 密码:fqif])

# style="color: #ff6600;">定义1个空函数:(不写pass就报错了)

图片 2


#  style="color: #ff6600;">概念3个无参函数注意缩进

图片 3


概念1个含参函数

图片 4

扩:文书档案表明用""" 可能'''来定义,就是之类效果

图片 5


#  style="color: #ff6600;">概念一个含私下认可参数(缺省参数)的函数

图片 6

# 定义有重临值的函数

图片 7


# style="color: #ff6600;">定义含有多个再次来到值的函数(利用了元组)

图片 8

来个案例解释一下:(多再次来到值只是壹种假象,Python函数重回的仍然是纯净值~元组)

图片 9


style="color: #ff00ff;">传四个参数连串:(上边许多重返参数也得以回到一个list来促成类似作用)

style="color: #ff6600;">引用传递(通过元组、列表达成)**扩大有可变类型和不足变类型作为形参的对待

图片 10


# style="color: #ff6600;">定义3个可变参数的函数(参数名字一般都以 style="color: #ff6600;">*args)

图片 11

只要你要求传二个元组只怕列表进去的话,能够参数前面加 style="color: #ff6600;">*

图片 12

# style="color: #ff6600;">定义含关键字参数的函数:def default_kv_params(name,age=23, style="color: #ff6600;">**kv):

# 可变参数允许你传入0个或专断个参数,这个可变参数在函数调用时自动组装为二个tuple
# 关键字参数允许你传入0个或随便个含key-value的参数,自动组装为多少个dict

图片 13

来个综合案例:def default_god_params(name,age=23,*args,**kv):

图片 14

急需留意py里面包车型地铁书写格式==》 style="color: #ff6600;">先定义再调用(Code参考)

图片 15


style="color: #008000;">NetCore:(C#基本功语法大家都很熟了,作者贴三个解说的Code就可以)

style="color: #ff6600;">VSCode里面假如也想像VS一样,///就生成注释==》请安装函数文档注释: style="color: #ff0000;">XML Documentation Comments

using System;
using System.Collections.Generic;


namespace _6func { class Program { static void Main(string[] args) {

            #region Base
            // # 定义一个空函数:
            Method();
            // # 定义一个无参函数
            GetName();
            // # 定义一个含参函数
            ShowInfos("李四", 22);
            // # 定义一个含默认参数(缺省参数)的函数
            DefaultParam("张三");
            // # 定义有返回值的函数
            int result = DivHaveReturn(1, 2);
            Console.WriteLine($"计算结果为{result}");
            #endregion


// # 定义含有八个再次回到值的函数(利用了元组) var (sum, dvalue) = DivHaveReturns(一, 贰); Console.WriteLine($"sum:{sum},D-value:{dvalue}");
// 传八个参数种类: // 引用传递(通过元组、列表达成):增添有可变类型和不可变类型作为形参的对比 var list = new List() { 一, 二, 叁, 4, 5 }; Console.WriteLine(DefaultSomeParams(list)); Console.WriteLine(list.Count);//那便是援引传递的评释
// # 定义1个可变参数的函数(参数名字一般都是*args) Console.WriteLine(DefaultParams(1, 2, 3, 4, 5));
// # 定义含关键字参数的函数 直接传Dict }

        #region base
        /// <summary>
        /// 定义一个空函数
        /// </summary>
        private static void Method()
        {


} ///

/// 定义一个无参函数 /// // private static void GetName() // { // Console.WriteLine("你好"); // } //简写 private static void GetName() => Console.WriteLine("你好");
/// /// 定义一个含参数的函数 /// /// 名字 /// 年龄 // private static void ShowInfos(string name, int age) // { // Console.WriteLine($"笔者叫{name} 笔者的年纪是{age}"); // } //简写 private static void ShowInfos(string name, int age) => Console.WriteLine($"小编叫{name} 作者的年龄是{age}");
/// /// 定义一个含缺省参数的函数 /// /// 名字 /// 年龄默认23 // private static void DefaultParam(string name, int age = 贰叁) // { // Console.WriteLine($"作者叫{name} 小编的年龄是{age}"); // } //简写 private static void DefaultParam(string name, int age = 二三) => Console.WriteLine($"笔者叫{name} 笔者的年龄是{age}");
/// /// 定义一个有返回值的函数(计算a b,返回计算结果) /// /// num1 /// num2 // private static int DivHaveReturn(int a, int b) // { // return a b; // } //简写 private static int DivHaveReturn(int a, int b) => a b;

        #endregion


///

/// 定义含有多个返回值的函数(利用了元组) /// 计算a b的和,计算a-b,并返回两个结果 /// /// /// /// // private static (int sum,int dValue) DivHaveReturns(int a, int b) // { // return ((a b),(a-b)); // } //简写 private static (int sum, int dValue) DivHaveReturns(int a, int b) => ((a b), (a - b));

        #region 传入多个参数系列
        /// <summary>
        /// 利用列表实现,引用传递之类的C#还有ref和out,这边就不说了
        /// </summary>
        /// <param name="nums"></param>
        /// <returns></returns>
        private static int DefaultSomeParams(List<int> numList)
        {
            int sum = 0;
            foreach (var item in numList)
            {
                sum  = item;
            }
            numList.Clear();
            return sum;
        }
        /// <summary>
        /// 定义一个可变参数的函数
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        private static int DefaultParams(params int[] args)
        {
            int sum = 0;
            foreach (var item in args)
            {
                sum  = item;
            }
            return sum;
        }
        #endregion
    }
}

步入正题:招待建议更简约或然功效越来越高的法子

复习C#基本功请看附录二:https://www.cnblogs.com/dotnetcrazy/p/9102030.html#csharp

先说下认为,python的编程有一点JavaScript的痛感(举个例子:'和“不经常候不区分),又感到到像国外版的易语言,整个经过像读书同样,举个例子三个因素不在列表之中==> for item not in lists。使用它做个大点的档期的顺序必将在先明确好编程风格,不然能令人崩溃的。先不追究,前面会持续追究。。。(Python二自己就不讲了,官方推荐使用Python3

函数相关扩充

基本功体系:(那边着重说说Python,上次讲过的事物本身就一笔带过了)

先说下以为,python的编制程序有一些JavaScript的以为(比方:'和“一时候不区分),又感到像国外版的易语言,整个经过像读书同样,比方3个因素不在列表之中==> for item not in lists。使用它做个大点的类型早晚要先明确好编制程序风格,不然能令人倾家荡产的。先不追究,前面会一连研讨。。。(Python2本身就不讲了,官方推荐使用Python3

 

style="color: #ff0000;">一.递归函数:函数递归调用其实正是投机调用本身,关键点只要考虑如几时候跳出就可以(未有跳出正是死循环)

先来个不难的案例熟稔一下:

图片 16

来个案例(实际专门的学业中并不会友善定义,用系统自带 style="color: #ff6600;">strip方法就能够)

图片 17

C#的递归小编就引述一下在先的Code:https://github.com/dunitian/LoTCodeBase/blob/master/NetCode/1.面向进程/0一.基础/10.递归案例/Program.cs

图片 18


贰.无名函数名目多数: style="color: #007000;">lambda 参数: 表明式

图片 19

来个平时用的案例:data_list.sort(key=lambda x:x["key"])

图片 20

再有3个相比常用的地方:(当参数传递

图片 21

NetCore:上边Code中的简写都以用无名函数的法子,能够参见


3.全局变量和一些变量 

有人大概会说,那些就太轻便了,没啥好说的,(⊙o⊙)… Python还真需求说说,来个案例给你猜结果:

图片 22

一贯看结果吗:开采全局变量a木有被涂改,而b修改了

图片 23

依然来个简易案例注明下吧~

图片 24

# 那是因为,python定义二个变量的写法不用加类型导致的(⊙﹏⊙) 所以 style="color: #00七千;">函数里面a=200,python解释器就认为你定义了七个和a那个全局变量名字同样的局地变量,那怎么用吧? style="color: #ff0000;">global来声称一下全局变量即可:

图片 25

总结:

# 在函数中不采纳 style="color: #ff0000;">global申明全局变量不可能改改全局变量==>本质是无法修改全局变量的针对性,即不可能将全局变量指向新的数额

# 对于不可变类型的全局变量来说,因其指向的数量不可能改改,所以不选择global时无法修改全局变量

# 对于可变类型的全局变量来讲,因其指向的多寡可以修改,所以不行使global时也可修改全局变量


style="color: #008000;">上边就进来验证扩大连串,看看一些定义

# 在此之前许多材质说py三无名函数里不可能调用print函数,本身测试下

图片 26


# 可变类型与不可变类型的变量分别作为函数参数的区分

# 感觉纳闷能够看后面包车型客车运算符扩大()

图片 27

# Python中函数参数都以援引传递
# 对于不足变类型,因变量无法改改,所以运算不会影响到变量自个儿
# 而对于可变类型来讲,函数体中的运算有希望会改动传入的参数变量


# 函数名能或不能够再度的主题素材(能不能 style="color: #00七千;">重载:具备分裂的参数的连串或参数的个数【跟再次回到值不妨】

图片 28

结论:函数名无法重名


来八个风趣的扩展

style="color: #ff6600;">1.交流三个数熟谙吧,编程第3课,除了用其3变量 或者 两数相加减 达成外,Python还应该有1种新方式 style="color: #ff0000;">a,b=b,a

图片 29

NetCore:这一个笔者也是刚知道,O(∩_∩)O哈哈~还得多谢争执区的小家伙^_^

图片 30


 2. style="color: #ff6600;">eval(和js里面包车型地铁eval差不离): style="color: #00九千;">不太建议利用

 图片 31

一.出口 类型转变

Python写法:

图片 32

NetCore:

图片 33

二.字符串拼接 style="background-color: initial;">拼接出口情势

python:

图片 34

NetCore

图片 35

3.字符串遍历、下标、切条

要害说下python的 style="color: #ff0000;">下标,有一些意思,最终一个成分,大家一般都以len(str)-1,他可以从来用-1,倒2自然即是-2

#聊起底贰个成分:user_str[-1]

user_str[-1]

user_str[len(user_str)-1] #其余编制程序语言写法

#倒数第一个因素: style="color: #ff0000;">user_str[-2]

图片 36

本次为了进一步形象相比较,一句一句翻译成NetCore(有未有觉察规律,user_str[ style="color: #ff6600;">user_str.Length-1]==》 style="color: #ff6600;">-1是最终一个,user_str[ style="color: #ff6600;">user_str.Length-2]==》 style="color: #ff6600;">-贰是最终一个。python在那地点简化了

图片 37

3.2 python切开语法: style="color: #ff0000;">[start_index:end_index:step] (end_index取不到)

# 切片:[start_index:end_index:step] (end_index取不到)
# eg:str[1:4] 取str[1]、str[2]、str[3]
# eg:str[2:] 取下标为2开始到最后的元素
# eg:str[2:-1] 取下标为2~到倒数第二个元素(end_index取不到)
# eg:str[1:6:2] 隔着取~str[1]、str[3]、str[5](案例会详细说)
# eg:str[::-1] 逆向输出(案例会详细说,)

来个案例:小编注释部分说的很详细了,附录会贴democode的

图片 38

NetCore,其实您用Python跟任何语言相比反差更加大,net真的很有力了。补充(比较看就清楚Python的step为何是二了,i =二==》二)

 图片 39

0.命名规则

壹.命名规则¶

Python官方是引进应用_来间隔单词,但貌似开垦职员都以以各自己作主语言的命名来定义的,那么些就各人欣赏了,不过团队自然要联合。

取名规则:总的原则正是 见名知意,一般都以 驼峰命名法,纯Python的话推荐用 _连日来单词

扩充:Python关键词能够友善打字与印刷一下:

In [1]:

import keyword
print(keyword.kwlist)

 

['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

 

 

办法层层:

Python官方是推荐应用_来间隔单词,但貌似开垦人士都以以各自主语言的命名来定义的,这么些就各人喜好了,然而团队自然要合并。

style="color: #ff6600;">标示符字母、下划线和数字组合,且数字不能够开始(这些大概都一律) style="color: #ff0000;">注意: style="background-color: #ffff00; color: #000000;">标记符是分别轻重缓急写的

图片 40图片 41

style="color: #ff6600;">命名规则,总的原则正是见名知意,一般都以驼峰命名法,纯Python的话推荐用_连日单词

 扩充:Python的 style="color: #ff6600;">关键词可以友善打字与印刷一下:

图片 42

['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

1.1.标识符¶

标示符由字母、下划线和数字组合,且数字不能够起初(那几个大概都同样)注意:标志符是分别轻重缓急写的

先到那吗,有如何扩大的上面再贴吧~

# 查找:find,rfind,index,rindex

Python查找推荐您用find和rfind

图片 43

netcore:index0f就也就是python里面包车型大巴find

图片 44


# 计数:count

python:str.count()

图片 45

netcore:那一个真用基础来解决的话,二种办法:

先是种本人变形一下: style="background-color: initial;">(原字符串长度 - 替换后的尺寸) / 字符串长度

图片 46

 

style="color: #ff6600;">字符串计算另1种艺术(就用index)【点本人】

 

            int count = 0;
            int index = input.IndexOf("abc");


while (index != -1) { count ; index = input.IndexOf("abc", index 三);//index指向abc的后一人 }

 

Python补充表明:像那个方法演练用ipython3就好了(sudo apt-get install ipython3),code的话需求叁个个的print,比较费心(作者那边因为必要写作品,所以只可以3个个code)

图片 47

index查找不到会有不行

图片 48


# 替换:replace

Python:xxx.replace(str一, str二, 替换次数)

图片 49

replace可以钦定替换几回

图片 50

NetCore:替换钦命次数的法力有一点业余,就背着了,你能够自行思量哦~

图片 51


style="color: #ff6600;">#连接:join:eg:print("-".join(test_list))

style="color: #ff6600;">图片 52

 netcore:string.Join(分隔符,数组)

图片 53 style="background-color: initial;"> 

style="color: #ff6600;">#分割:split(按钦命字符分割),splitlines(按行分割),partition(以str分割成三有的,str前,str和str后),rpartition

说下split的切成条用法 :print( style="background-color: #ffff9玖;">test_input.split(" ",3)) #在第十一个空格处切成条,前面包车型大巴不切了

图片 54

图片 55

此起彼落说说 style="color: #ff6600;">splitlines(按行分割),和split("n")的区分笔者图中给了案例

扩展: style="background-color: initial; color: #ff6600;">split(),暗中认可按空字符切割(空格、t、n等等,不用操心再次来到'')

图片 56

谈到底说一下 style="color: #ff6600;">partition style="background-color: initial;">和 style="color: #ff6600;">r style="background-color: initial;"> style="color: #ff6600;">partition 归来是元祖类型(前面会说的),格局和find同样,找到第三个地位极度的就罢工了【注意一下没找到的事态】

图片 57

 

netcore: style="background-color: initial;"> split里面大多种载方法,能够团结去查看下,eg: style="color: #ff6600;">Split("n",StringSplitOptions.RemoveEmptyEntries)**

再说一下这几个: style="background-color: initial;">test_str.Split('a');//重返数组。 style="color: #ff6600;">假使要和Python同样 style="background-color: #ffff9玖;">重返列表==》test_str. style="background-color: #ffff99;">Split('a').ToList(); 【须求引用linq的命名空间啊】

图片 58


# 头尾决断:startswith(以。。。开始),endswith(以。。。结尾)

图片 59

netcore:

图片 60


# 大小写系: style="color: #ff6600;">lower(字符串转变为题写), style="color: #ff6600;">upper(字符串转变为题写),title(单词首字母大写), style="color: #ff6600;">capitalize( style="background-color: #ffff9玖;">第3个字符大写,其余变小写)

图片 61

netcore:

图片 62


# 格式连串: style="color: #ff6600;">lstrip(去除左侧空格), style="color: #ff6600;">rstrip(去除左侧空格), style="color: #ff6600;">strip(去除两边空格)美化输出种类: style="color: #ff6600;">ljust, style="color: #ff6600;">rjust, style="color: #ff6600;">center

style="background-color: initial;">图片 63 style="background-color: initial;"> 

图片 64

 

netcore:Tirm很强劲,除了去空格还足以去除你想去除的放肆字符

图片 65

ljust,rjust,center那些就隐瞒了,python通常在linux终端中输出,所以这多少个用的相比较多。net里面string.Format种种格式化输出,能够参照

 


# 验证连串: style="color: #ff6600;">is阿尔法(是还是不是是纯字母), style="color: #ff6600;">isalnum(是或不是是数字|字母), style="color: #ff6600;">isdigit(是还是不是是纯数字), style="color: #ff6600;">isspace(是还是不是是纯空格)

一张图化解,别的的和谐去试1试吧,注意哦~ style="color: #ff0000;"> style="background-color: initial;"> test_str5=" t n " # style="background-color: #ffff99;">isspace() ==>true

图片 66

 

netcore: style="background-color: initial;">string.IsNullOrEmpty 和 string.IsNullOrWhiteSpace 是系统自带的,其余的你要求本身包装一个扩张类(eg:粗略包装)【附录有】

图片 67

1.注释

1.2.Python¶

In [2]:

# Python标识符区分大小写的案例
temp="xxx"
tEmp="==="
print(temp tEmp)

 

xxx===

 

附录:

本文由bwin必赢发布,转载请注明来源

关键词: 必赢彩票网